Typescript學(xué)習(xí)筆記(20) ----- keyof 語法的使用

keyof 語法

常用的場景:

  • 獲取對象的某一屬性值時
    比如:


    image.png

    當(dāng)這么寫時,會造成兩個問題:

  • 沒有類型保護(hù),所以ts會拋出這樣的一個錯誤
  • ts無法進(jìn)行有效的類型推斷。peopleName應(yīng)該是一個string,但ts推斷出來的卻是any。

原因是因為,ts無法知道傳進(jìn)來的key這個變量是否是people這個類型所具有的。
可以使用之前所學(xué)的泛型結(jié)合keyof解決這一問題。
代碼:

getInfo<T extends keyof Person>(key:T):Person[T]{
    return this.info[key]
  }

思路:

  • keyof 好比是js中遍歷一個對象的屬性
    代碼就轉(zhuǎn)換成
T extends name
相當(dāng)于
type T = name
這時候設(shè)置key為name
key:T
返回值就應(yīng)該是Person[name]
:person[T]

這樣以來ts就能推斷出獲取的屬性類型了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容