2

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 の省略形メンバーの名前も変更する必要がありますが、これはバグのように聞こえます。

4

1 に答える 1

3

あなたの説明が本当なら、それはバグであることに同意します。ただし、言語と Visual Studio へのプラグインを区別する必要があります。あなたのバグは、言語自体ではなく、ビジュアル スタジオ プラグインのリファクタリング部分にあります。最新リリース (0.8.0) はアルファ版であるため、機能が実装されていない多くのバグがあることに注意してください。

于 2012-11-14T13:49:21.357 に答える