TypeScriptのkey inでObjectを型安党にする

公開日: 2021-08-10

曎新日: 2021-08-10

  • TypeScript
  • Tips

䟋えば以䞋のようなObjectを扱うずしたす。

const translations = {
  ja: {
    title: "こんにちは",
    body: "はじめたしお"
  },
  en: {
    title: "Hello"
    body: "Nice to meet you"
   }
}

たた、translations のkeyはja, en, zhなどの蚀語コヌドのみにしたいずしたす。
この堎合、TypeScriptのkey inを䜿っおtranslationsを型安党にするこずができたす。

type Language = "ja" | "en" | "zh"
type Translation = {
  title: string;
  body: string;
}

// { [key in TypeA]: TypeB }
const translations: { [key in Language]?: Translation } = {
  ja: {
    title: "こんにちは",
    body: "はじめたしお"
  },
  en: {
    title: "Hello",
    body: "Nice to meet you"
  }
}

translations.zh = { title: "䜠奜", body: "初次见面" } // OK
translations.ja = "こんにちは" // Error!
translations.foo = "foo" // Error!

以䞊です。

yona

yona

琉球倧孊の理孊郚に所属しおいる倧孊3幎生です。 趣味ず仕事でWebアプリ開発やシステム開発をしおいたす。