2

当我玩过 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 中的简写成员,这对我来说听起来像是一个错误。

4

1 回答 1

3

如果你描述的是真的,那么我同意这是一个错误。但是您必须区分 Visual Studio 的语言和插件。您的错误在于 Visual Studio 插件的重构部分,而不是语言本身。请注意,由于最新版本 (0.8.0) 是 alpha 版本,因此存在许多未实现功能的错误。

于 2012-11-14T13:49:21.357 回答