【发布时间】:2018-05-15 23:05:11
【问题描述】:
游乐场代码here
示例:
interface IFoo {
bar: number;
foo?: () => void;
}
abstract class AbstractFoo implements IFoo {
bar = 42;
};
由于foo 是可选的,我不需要在AbstractFoo 中实现它。但是,我可以在AbstractFoo 的孩子中实现它。因此,我希望以下代码无法编译,因为 foo 实现错误:
class ConcreteFoo1 extends AbstractFoo {
foo: string; // type for "foo" isn't checked
}
但是 TS 不对IFoo 的可选成员进行任何类型检查。除非我明确地实现它。然后编译器将按预期执行类型检查:
class ConcreteFoo2 extends AbstractFoo implements IFoo {
foo(arg: number) { } // error when implementing IFoo explicitly
}
所以我的问题是:为什么打字稿不为具体类隐式实现接口 IFoo?有什么方法可以强制执行这种行为吗?
【问题讨论】:
标签: javascript typescript