hro19 / Typescript_Katsutadai

Typescript workshop in 勝田台
0 stars 0 forks source link

`as const satisfies T` は型チェックが行われつつも、型推論結果が保持される #8

Open hro19 opened 1 year ago

hro19 commented 1 year ago

この二つの違いは何でしょう。

const initialSpeechOptions: Readonly<Record<string, string>> = {
  verb: "動詞",
  idiom: "熟語",
  adjective: "形容詞",
  adverb: "副詞",
  noun: "名詞",
  auxiliaryVerb: "助動詞",
  gerund: "動名詞",
  all: "全て",
};
const initialSpeechOptions = {
  verb: "動詞",
  idiom: "熟語",
  adjective: "形容詞",
  adverb: "副詞",
  noun: "名詞",
  auxiliaryVerb: "助動詞",
  gerund: "動名詞",
  all: "全て",
} as const satisfies Record<string, unknown>;
hro19 commented 1 year ago

上記の場合(型注釈)はあらかじめ決められた型が推論値に使われます。 一方下記の場合(satisfies)は型をチャックしてから推論値が定義されるという、とっても便利な関数です。 ですのであらかじめ設定しておく型エイリアスはunknownなどを使うことによって、推論値を持たせることが出来る。

長所