TypeScript里的Index signature
生活随笔
收集整理的這篇文章主要介紹了
TypeScript里的Index signature
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考鏈接:https://basarat.gitbook.io/typescript/type-system/index-signatures
看一個例子:
class Foo {constructor(public message: string){};log(){console.log(this.message)}}let foo: any = {};foo['Hello'] = new Foo('World');foo['Hello'].log(); // Worldconsole.log(c);最后輸出World
如果把一個對象作為key,結果會怎么樣?JavaScript會自動調用該對象的toString實現,將結果作為key來訪問。
let obj = { toString(){ console.log('toString called') return 'Hello' } } let foo: any = {}; foo[obj] = 'World'; // toString called console.log(foo[obj]); // toString called, World console.log(foo['Hello']); // World而在TypeScript里,無法通過編譯:TS2538: Type ‘{ toString(): string; }’ cannot be used as an index type.
除非顯式調用toString方法:
測試結果:
結論1:TypeScript index signatures must be either string or number
看個例子:
let foo2:{ [index:string] : {message: string} } = {};foo2是一個對象,包含了一個index signature,類型為字符串。名稱可以任意取,該index指向另一個對象,該對象必須包含一個字段message,值為string.
下列代碼會引起編譯錯誤:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的TypeScript里的Index signature的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022个人所得税申报操作流程,有以下两
- 下一篇: TypeScript里的中括号类型定义法