Type queries
TypeScript 可以透過 keyof
和 typeof
來取得既有型別的資訊,例如屬性或方法
keyof
用於從物件型別取得所有屬性 key 值
type Person = {
name: string;
age: number;
};
type PersonKeys = keyof Person; // 為 "name" | "age" 的聯合型別
typeof
用於取得變數的型別
const user = {
name: "Alice",
age: 30,
};
type UserType = typeof user; // 取得 user 變數的型別
// userData 必须符合 user 變數的型別
const userData: UserType = {
name: "Bob",
age: 25,
};
透過 index 存取型別
透過 index 也可以從 array 或 object 型別取得資訊
interface Car {
make: string;
model: string;
year: number;
color: {
red: string;
green: string;
blue: string;
};
}
// "color"為index,此時carColor 需要符合 Car.color 的規範
let carColor: Car["color"];
//可以使用 Unions 作為index,此時carProperty的型別為 number | {red: string green: string;blue: string;}
let carProperty: Car["color" | "year"];