我們可以使用索引訪問型別來查詢另一個型別上的特定屬性
tsTrytypePerson = {age : number;name : string;alive : boolean };typeAge =Person ["age"];
索引型別本身就是一個型別,因此我們可以使用聯合型別、keyof 或其他完全不同的型別
tsTrytypeI1 =Person ["age" | "name"];typeI2 =Person [keyofPerson ];typeAliveOrName = "alive" | "name";typeI3 =Person [AliveOrName ];
如果你嘗試索引一個不存在的屬性,甚至會看到錯誤提示
tsTrytypeProperty 'alve' does not exist on type 'Person'.2339Property 'alve' does not exist on type 'Person'.I1 =Person ["alve" ];
使用任意型別進行索引的另一個例子是使用 number 來獲取陣列元素的型別。我們可以將其與 typeof 結合使用,從而方便地捕獲陣列字面量的元素型別
tsTryconstMyArray = [{name : "Alice",age : 15 },{name : "Bob",age : 23 },{name : "Eve",age : 38 },];typePerson = typeofMyArray [number];typeAge = typeofMyArray [number]["age"];// OrtypeAge2 =Person ["age"];
索引時只能使用型別,這意味著你不能使用 const 來建立變數引用
tsTryconstkey = "age";typeType 'key' cannot be used as an index type.Age =Person []; key
'key' refers to a value, but is being used as a type here. Did you mean 'typeof key'?2538
2749Type 'key' cannot be used as an index type.
'key' refers to a value, but is being used as a type here. Did you mean 'typeof key'?
但是,你可以使用類型別名來實現類似的重構風格
tsTrytypekey = "age";typeAge =Person [key ];