假设我们有一个为我们创建构造函数的库 . 我们可以传递一个Object作为第一个参数,这个属性将直接添加到构造函数中 .
这个例子看起来像:
let Tiger = can.Construct.extend({
leg: 3
});
我们现在有两种可能性:
-
创建实例
let bar = new Tiger('foo', 'bar')
-
修改构造函数属性
Tiger.leg = 4
second will throw an error with my current type definitios
属性'leg'不会在ConstructFactory类型上退出
我当前的类型定义如下:
declare namespace can {
interface ConstructFactory {
new(...args: any[]): Construct;
}
class ConstructStatic {
static extend(staticProperties: Object): ConstructFactory;
}
class Construct extends ConstructStatic {
constructor(...args: any[]);
}
}
如果我返回一个类型 any
而不是 ConstructFactory
, Tiger.leg
将不会抛出错误,但现在我无法创建实例,因为构造函数定义丢失了 .
-
打字稿playgroud link
1 回答
我认为这可以满足您的需求: