TypeScript インターフェース キー取得
TypeScriptでインターフェースのキーを文字列配列として取得する方法
TypeScriptでは、インターフェースのキーを文字列配列として取得することができます。これにより、インターフェースの構造を動的に調べたり、キーに基づいて操作を実行することができます。
方法1: keyof
演算子を使用する
最も一般的な方法は、keyof
演算子を使用することです。これは、指定された型またはインターフェースのキーの型を取得します。
interface Person {
name: string;
age: number;
address: string;
}
type PersonKeys = keyof Person; // PersonKeysは"name" | "age" | "address"の型になります
const keys: string[] = Object.keys(Person); // ["name", "age", "address"]
方法2: Object.keys()
を使用する
Object.keys()
は、オブジェクトのキーを文字列配列として返します。インターフェースをオブジェクトに変換して使用することもできます。
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const keys: string[] = Object.keys(person); // ["name", "age", "address"]
注意事項
Object.keys()
は、オブジェクトのキーを文字列配列として取得しますが、インターフェース自体ではなく、インターフェースのインスタンスを使用する必要があります。keyof
演算子は、インターフェースのキーの型を取得するだけで、実際のキーの値は取得できません。
TypeScript インターフェース キー取得のコード例
interface Person {
name: string;
age: number;
address: string;
}
type PersonKeys = keyof Person; // PersonKeysは"name" | "age" | "address"の型になります
const keys: string[] = Object.keys(Person); // ["name", "age", "address"]
Object.keys(Person)
:Person
インターフェースのキーを文字列配列として取得します。keyof Person
:Person
インターフェースのキーの型を取得します。
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const keys: string[] = Object.keys(person); // ["name", "age", "address"]
具体的な使用例
interface Person {
name: string;
age: number;
address: string;
}
function printPersonKeys(person: Person) {
const keys: string[] = Object.keys(person);
console.log("Person keys:", keys);
}
const johnDoe: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
printPersonKeys(johnDoe); // 出力: Person keys: ["name", "age", "address"]
Object.getOwnPropertyNames()を使用する
Object.getOwnPropertyNames()
は、オブジェクトのすべての自身のプロパティの名前を文字列配列として返します。インターフェースのインスタンスに対して使用できます。
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const keys: string[] = Object.getOwnPropertyNames(person); // ["name", "age", "address"]
Reflect.ownKeys()を使用する
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const keys: (string | symbol)[] = Reflect.ownKeys(person); // ["name", "age", "address"]
for...inループを使用する
for...in
ループは、オブジェクトのすべての列挙可能なプロパティを反復処理します。インターフェースのインスタンスに対して使用できます。
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const keys: string[] = [];
for (const key in person) {
keys.push(key);
}
Object.entries()を使用する
Object.entries()
は、オブジェクトのキーと値のペアを配列の配列として返します。インターフェースのインスタンスに対して使用できます。
interface Person {
name: string;
age: number;
address: string;
}
const person: Person = {
name: "John Doe",
age: 30,
address: "123 Main St"
};
const entries: [string, any][] = Object.entries(person);
const keys: string[] = entries.map(([key]) => key);
javascript typescript