TypeScript类成员的速记错误?

时间:2012-11-14 13:37:38

标签: constructor typescript

当我使用TypeScript语言时,我对类成员速记语法的行为与继承感到困惑。假设您有以下有效的TypeScript,其中包含两个语义intendical类和一个具有一个属性的接口:

    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中的短手成员,这对我来说听起来像个错误。

1 个答案:

答案 0 :(得分:3)

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