当我使用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中的短手成员,这对我来说听起来像个错误。
答案 0 :(得分:3)
如果你描述的是真的那么我同意这是一个错误。但你必须区分视觉工作室的语言和插件。你的错误在于visual studio插件的重构部分,而不是语言本身。请注意,由于最新版本(0.8.0)是alpha版本,因此存在许多未实现的功能。