TypeScript 言語をいじってみると、クラス メンバーの短縮構文と継承の動作に戸惑いました。2 つのセマンティックな意図的なクラスと 1 つのプロパティを持つインターフェイスを持つ次の有効な 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 では、HasName を実装していないことを示す TypeScript エラーが発生します。
この動作が整っていると、クラスメンバーの短縮構文を安全に使用できなくなります:-/
これはバグですか、それとも意図したものですか? 私に関する限り、リファクタリング操作によってコンパイラエラーが発生することは決してありません。代わりに、Person1 の省略形メンバーの名前も変更する必要がありますが、これはバグのように聞こえます。