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'中的描述符參數相同。 –