interface BaseInter{
name : string;
test();
}
abstract class Abs implements baseInter{
}
Run Code Online (Sandbox Code Playgroud)
在TS编译器中抱怨该类错误地实现了接口.abs类型中缺少name.
这里abs是一个抽象类,为什么我们需要在那里实现接口呢?
Nit*_*mer 25
您需要重新编写界面中的所有成员/方法并将abstract关键字添加到它们中,因此在您的情况下:
interface baseInter {
name: string;
test();
}
abstract class abs implements baseInter {
abstract name: string;
abstract test();
}
Run Code Online (Sandbox Code Playgroud)
(游乐场代码)
有一个建议:在抽象类实现接口时缺少属性声明,但由于这个原因它被拒绝了:
虽然,不写声明的便利性会很好,但这种变化可能造成的混乱/复杂性并不能保证.通过检查声明,不清楚哪些成员出现在类型上,是所有具有呼叫签名的属性,方法或属性; 他们会被认为是抽象的吗?可选的?
你可以通过一个克服编译时错误的小技巧得到你想要的:
interface baseInter {
name : string;
test();
}
interface abs extends baseInter {}
abstract class abs implements baseInter{
}
Run Code Online (Sandbox Code Playgroud)
这一招利用打字稿的的宣言合并,最初呈现在这里,并在相关的SO问题贴在这里。
| 归档时间: |
|
| 查看次数: |
3853 次 |
| 最近记录: |