【TypeScript】Union型からオブジェクトのkeyを型指定する
やりたいこと
type Props = "prop1" | "prop2" | "prop3";
function func() { return { prop1: "", prop2: "", prop3: "", };}
Union型の値のみをkeyとして持つオブジェクトの型を指定したい。
解決法
type Props = "prop1" | "prop2" | "prop3";
function func() {function func(): { [key in Props]: string } { return { prop1: "", prop2: "", prop3: "", };}
Mapped Typesを使い[key in Props]
とすることで実現できる。
type Props = "prop1" | "prop2" | "prop3";
function func(): { [key in Props]: string } {function func(): { [key in Props]?: string } { return { prop1: "", prop2: "", prop3: "", };}
keyをoptional(任意)にしたい時は上記のようにすればOK。