🐕
【TypeScript】keyof型演算子まとめ
keyof any = string | number | symbol であることを初めて知ったので
改めて自分用にkeyofをおさらいしようと思います。
結論
keyof
はオブジェクト型からプロパティ名を型として返す演算子です。
①二つ以上のプロパティがある場合
全てのプロパティがユニオン型で返されます。
type Weather = {
title: string;
temperature: number;
rating: number;
};
type WeatherKey = keyof Weather;
// 下と一致
type WeatherKey = "title" | "temperature" | "rating";
②インデックス型の場合
インデックスキーの型が返却されます。
type Map = {
[K: string]: any;
};
type MapKeys = keyof Map;
// string | number
stringの場合は number | string が返ります。
③Any型の場合
any型にkeyofを使うと string | number | symbol
型が返ります。
type AnyKeys = keyof any;
// string | number | symbol
④配列の場合
配列に keyofを使うと配列のプロパティ名(メソッドチェーンでよく利用するtoStringなど)が返ります。
(この辺り、参考になる記事が見つけられなかったので割愛)
type PersonKeys = keyof Person[];
// "length" | "push" | "pop" | "concat"
Discussion