TypeScript 可索引型別介面
可以通過介面描述能夠“通過索引獲取值”的型別,例如陣列或者物件:
[typescript] 純文字檢視 複製程式碼let arr=[1,2,3,4]; let obj={ webName:"螞蟻部落", age:4 } arr[1]; obj["age"]
下面看一段程式碼例項,使用介面規定一個可索引型別:
[typescript] 純文字檢視 複製程式碼interface IArray { [index: number]: string; } let arr: IArray= ["螞蟻部落", "青島市南區"]; let ant: string = arr[0];
上面規定索引簽名是number型別,返回值是字串型別。
共有支援兩種索引簽名:字串和數字。 可以同時使用兩種型別的索引,但是數字索引的返回值必須是字串索引返回值型別的子型別。 這是因為當使用 number來索引時,JavaScript會將它轉換成string然後再去索引物件。
[typescript] 純文字檢視 複製程式碼class Animal { name: string; } class Dog extends Animal { breed: string; } interface NotOkay { [x: number]: Animal; [x: string]: Dog; }
上面程式碼會報錯,因為數字型別索引的返回值不是字串型別索引返回值的子型別。
再來看一段程式碼例項:
[typescript] 純文字檢視 複製程式碼interface Itest { [index: string]: number; length: number; name: string }
可以將索引簽名設定為只讀,這樣可以防止給索引賦值:
[typescript] 純文字檢視 複製程式碼interface Itest { readonly [index: number]: string; } let arr: Itest = ["螞蟻部落", "青島市南區"]; arr[1] = "ts教程";
上面程式碼由於再次給索引為1的陣列賦值,所以報錯。
相關文章
- TypeScript 索引型別TypeScript索引型別
- TypeScript 混合型別介面TypeScript型別
- typescript 介面和物件型別(四)TypeScript物件型別
- 淺談TypeScript型別、介面、裝飾器TypeScript型別
- TypeScript this型別TypeScript型別
- TypeScript 泛型型別TypeScript泛型型別
- TypeScript 介面 可選屬性TypeScript
- TypeScript 型別相容TypeScript型別
- TypeScript 交叉型別TypeScript型別
- Typescript:基本型別TypeScript型別
- TypeScript 字串型別TypeScript字串型別
- TypeScript Never型別TypeScript型別
- TypeScript Any型別TypeScript型別
- TypeScript 型別安全TypeScript型別
- TypeScript 泛型介面和泛型類TypeScript泛型
- TypeScript 官方手冊翻譯計劃【八】:型別操控-按索引訪問的型別TypeScript型別索引
- TypeScript type 型別別名TypeScript型別
- TypeScript 型別系統TypeScript型別
- Typescript高階型別TypeScript型別
- TypeScript 聯合型別TypeScript型別
- TypeScript 型別保護TypeScript型別
- TypeScript 型別推斷TypeScript型別
- TypeScript 型別斷言TypeScript型別
- TypeScript void 型別TypeScript型別
- TypeScript 陣列型別TypeScript陣列型別
- TypeScript 函式型別TypeScript函式型別
- TypeScript 數值型別TypeScript型別
- TypeScript 布林型別TypeScript型別
- TypeScript Widened型別TypeScriptIDE型別
- TypeScript 對映型別TypeScript型別
- TypeScript 元組型別TypeScript型別
- TypeScript 字面量型別TypeScript型別
- TypeScript資料型別TypeScript資料型別
- TypeScript入門3:介面、多型TypeScript多型
- TypeScript型別系統和基礎型別TypeScript型別
- 索引的型別索引型別
- typeScript 型別斷言、聯合型別和交叉型別(七)TypeScript型別
- TypeScript-----資料型別TypeScript資料型別