TypeScript_ keyof 關鍵字
keyof
是 TypeScript 中的一種索引類型查詢操作符,用於獲取某種類型的所有鍵的聯合類型。例如,如果我們有一個介面:
interface Person {
name: string;
age: number;
gender: string;
}
那麼 keyof Person
的結果將是 'name' | 'age' | 'gender'
這種類型。
如何使用 keyof
type PersonKeys = keyof Person;
在這裡,PersonKeys
將是 'name' | 'age' | 'gender'
這種類型。
我們也可以使用 keyof
來訪問對象的屬性:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] {
return obj[key];
}
let person: Person = {name: 'John', age: 30, gender: 'male'};
let personName: string = getProperty(person, 'name'); // John
在這個例子中,getProperty
函數接收一個泛型類型 T
和該類型的一個鍵 K
,並返回該鍵對應的值。
keyof
在索引簽名中的使用
在下面的例子中,我們利用了 keyof
的特性在函數 transformRoutes
中遍歷輸入數據的每個屬性:
type InputData = {
[key: string]: Routes;
};
function transformRoutes(inputData: InputData): (string | string)[][] {
const result: (string | string)[][] = [];
for (let key in inputData) {
const routeData = inputData[key];
// Process routeData...
}
return result;
}
在上述例子中,我們使用 for...in
循環和 keyof
關鍵字遍歷輸入數據的每個屬性,然後對每個屬性執行一些操作。