【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。