当我玩过 TypeScript 语言时,我对类成员简写语法和继承的行为感到困惑。假设您有以下有效的 TypeScript,其中包含两个语义意图类和一个具有一个属性的接口:
class Person1 implements HasName {
constructor(public name: string) {}
}
class Person2 implements HasName {
public name : string;
constructor(name: string) {
this.name = name;
}
}
interface HasName {
name : string;
}
现在,如果您尝试在 HasName 接口中重命名“name”属性,则只有 Person2 中的成员会被正确重命名,而在 Person1 中,您将收到 TypeScript 错误,指出它不再实现 HasName。
有了这种行为,就不可能安全地使用类成员的简写语法:-/
这是一个错误还是有意的?就我而言,重构操作永远不会导致编译器错误。相反,它也应该重命名 Person1 中的简写成员,这对我来说听起来像是一个错误。