【发布时间】:2019-12-05 19:51:45
【问题描述】:
我有一个 QueryBuilder,并希望将其所有方法作为静态成员呈现在 Model 类中。
显然,这是有效的 Javascript 代码。但是,我怎么能让打字稿理解Model上那些静态方法的存在呢?
function queryable (target: any) {
for (const prop in target.prototype.builder) {
if (prop === 'constructor' || target.prototype.hasOwnProperty(prop)) {
continue;
}
target[prop] = (...args: any[]): any => {
return target.prototype.builder[prop](...args);
};
}
}
class QueryBuilder {
where(prop: string, value: string) {
console.log(prop, value);
console.log("I've presented on model class as static method.");
}
// ...
}
@queryable
class Model {
get builder () {
return new QueryBuilder();
}
// ...
}
// calling static where
Model.where('color', 'red');
类型“typeof Model”上不存在属性“where”。
【问题讨论】:
标签: typescript