防止子类中的字段重复

时间:2018-11-17 00:52:25

标签: typescript

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

1 个答案:

答案 0 :(得分:0)

没有这样的解决方案(也不应该这样吗?),可能是因为它与open-closed principle之类的OOP原理相矛盾。

不过,有一种解决方法(一如既往地进行权衡)。

将财产设为私有

class Parent {
    private name: string = '';
}

这样子类中的属性将导致编译错误“类型具有私有属性的单独声明”