class Parent {
// how can we decorate this field to
// prevent duplication in the child?
readonly name: string;
}
class Child extends Parent {
readonly name: string;
}
这种情况我想引起编译器错误。
这是使用babel-jest运行代码时发生的情况。
class Parent {
readonly name: string;
constructor() {
this.name = 'foo';
}
}
class Child extends Parent {
readonly name: string;
constructor() {
super();
}
}
const child = new Child();
document.writeln(child.name); // undefined
答案 0 :(得分:0)
没有这样的解决方案(也不应该这样吗?),可能是因为它与open-closed principle之类的OOP原理相矛盾。
不过,有一种解决方法(一如既往地进行权衡)。
将财产设为私有
class Parent {
private name: string = '';
}
这样子类中的属性将导致编译错误“类型具有私有属性的单独声明”