たとえば以下のようなコードがあるとします。
type Human = { name: string }; const humans: Human[] = [ { name: "yamada", }, { name: "satou", }, ] // できればhumansからHumanNamesをつくりたい・・・🤔 type HumanNames = "yamada" | "satou"
このとき、コメントにもあるようにhumans変数から、HumanNamesをつくりたいとします。
こういうときは、以下のように書けます。
type Human = { name: string }; const humans = [ { name: "yamada", }, { name: "satou", }, ] as const satisfies readonly Human[] const humanNames = humans.map(({ name }) => name); type HumanName = (typeof humanNames)[number];
TypeScript4.9から使える、satisfiesオペレーターを使うのがポイントです。
最近になって Next.js や Storybook でもsatisfiesが使えるようになったので、satisfiesはガンガン使っていきましょうーー。
おわり
コメント