亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我不能動態創建屬性?

為什么我不能動態創建屬性?

至尊寶的傳說 2021-12-23 14:42:58
我是打字稿的新手,只是一個問題。我們知道我們可以在 javascript 中動態定義一個屬性:class Rectangle {  constructor(height, width) {    this.height = height;    this.width = width;  }}但是在使用 typescript 時我們不能做同樣的事情:class Rectangle {  constructor(height:number, width:number) {    this.height = height;   //error     this.width = width;     //error   }}我知道如果pubic在構造函數中添加訪問標識符,例如參數前綴: ... constructor(public height:number, public width:number) {...}  //which create declaration automatically會解決這個問題,但我只是想知道,那個打字稿不是 javascript 的超集嗎?所以打字稿也應該支持所有有效的 javascript 語法?
查看完整描述

3 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

它是 JavaScript 的嚴格語法超集,并為語言添加了可選的靜態類型

另一件需要注意的是,像非強類型的特性或類似的東西在 TypeScript 中不起作用,這種現象與它類似。


查看完整回答
反對 回復 2021-12-23
?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

以下是TS解釋的流程。

  1. 所有屬性、方法都被初始化。

  2. 然后在實例化過程中,調用構造函數并使用默認值設置上述屬性。

在您的代碼中:

class Rectangle {

  constructor(height:number, width:number) {

    this.height = height;   //error 

    this.width = width;     //error 

  }

}

沒有提到任何屬性,因此您會收到錯誤消息


查看完整回答
反對 回復 2021-12-23
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

您可以這樣做,但是您當然會與該語言的類型檢查功能作斗爭。


class Rectangle {

  constructor(height:number, width:number) {

    (this as any).height = height;

    (this as any).width = width;

  }

}


const rt = new Rectangle(100, 200);

console.log((rt as any).width);

也就是說,如果您轉換為 any,您可以像在純 JavaScript 中那樣做任何事情。


查看完整回答
反對 回復 2021-12-23
  • 3 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號