gwk*_*gwk 5 typescript typescript1.8
我正在尝试解决Typescript中的这种特殊情况:
abstract class foo {
abstract bar();
}
class Foo1 extends foo {
bar() {
alert(1);
}
y: number = 3;
}
class Foo2 extends foo {
bar() {
alert(2);
}
}
let myFooClasses: Array<typeof foo> = [];
myFooClasses.push(Foo1);
myFooClasses.push(Foo2);
myFooClasses.forEach((item) => {
let a = new item();
a.bar();
})
Run Code Online (Sandbox Code Playgroud)
具体来说,问题是从myFooClasses技术上讲可能包含foo摘要,而Typescript对此发出警告。但是我真的想将的类型限制为myFooClasses继承自的具体类foo。有什么办法可以在Typescript中指定它?
您的数组类型应该是:
let myFooClasses: Array<{ new (): foo }> = [];
Run Code Online (Sandbox Code Playgroud)
然后这个:
myFooClasses.push(foo);
Run Code Online (Sandbox Code Playgroud)
产生这个错误:
'typeof foo' 类型的参数不能分配给类型 '{ new (): foo }' 的参数。不能将抽象构造函数类型分配给非抽象构造函数类型。
你也可以这样做:
type FooConstructor = { new (): foo };
let myFooClasses: FooConstructor[] = [];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
596 次 |
| 最近记录: |