🐕

【TypeScript】keyof型演算子まとめ

2022/12/03に公開

keyof any = string | number | symbol であることを初めて知ったので
改めて自分用にkeyofをおさらいしようと思います。

https://typescriptbook.jp/reference/type-reuse/keyof-type-operator

結論

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

ログインするとコメントできます