0
如果我们看看下面这个例子:默认的“get”访问描述符(带有定义的“set”访问符描述符)的类型是“undefined”吗?
class MyClass {
private _myVar: string;
public constructor() {
this._myVar = 'Hello world!';
}
public set myVar(value: string) {
this._myVar = value;
}
}
const myObj = new MyClass();
const otherVar: string = myObj.myVar;
没有错误产生,但应该有?
类没有为myVar
属性get
关键,所以它默认为undefined
,然而打字稿编译器不拿起这一点,说最后otherVar
分配是好的。
应该不是最后一次分配错误吗?
当你创建一个'property',所有按键被保留。 'get'被定义,但是返回'undefined'。在我看来,编译时指出缺少的getter时应该抛出一个错误。您可以将问题告知他们的github页面。 –
我将在跟踪器上打开一个问题,但是如果查看从TS中编译的JS,没有定义'get'(只是'set')。 – pleasedesktop
我应该改述我之前说过的话。属性描述符的所有键都被保留。 AFAIK get方法在属性描述符中定义,但会返回undefined,与'writable'相同,默认值为false,用于定义值的属性。以上是调用myVar属性的法律声明,因此不会引发错误。但是,这应该在编译时检测到,并且最好让编译器抛出一个错误。在类的实例中'get'和'set'基本上定义为与'Object.defineProperty'中的描述符参数相同。 –