Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Constructor TypeScript类成员速记错误?_Constructor_Typescript - Fatal编程技术网

Constructor TypeScript类成员速记错误?

Constructor TypeScript类成员速记错误?,constructor,typescript,Constructor,Typescript,在我使用TypeScript语言时,我被类成员速记语法和继承的用法弄糊涂了。假设您拥有以下有效的TypeScript,其中包含两个语义意图类和一个具有一个属性的接口: class Person1 implements HasName { constructor(public name: string) {} } class Person2 implements HasName { public name : string; const

在我使用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中的ShortHand成员,这听起来像是一个bug。

如果您描述的是真的,那么我同意这是一个bug。但您必须区分语言和VisualStudio插件。您的bug出现在visual studio插件的重构部分,而不是语言本身。请注意,由于最新版本(0.8.0)是alpha版本,有许多未实现的bug。编译器正确地识别了这一点,因此TypeScript语言或编译器中没有bug。我没有使用visual studio,我只是在他们页面上的TypeScript游乐场上玩。此外,如果您单击HasName界面中的name字段,您将看到Person1中的name字段不会像其他name成员那样高亮显示。这是相同的。您所描述的是一个用来进行重构的工具,唯一的区别是它在浏览器中。这是一个bug,但不在语言或编译器中。