よく以下のように、キャスト{} as Tを使ってリテラルに型指定をしているコードを見る。 type User = { id: string; name: string; }; const value1 = { user: {} as User, }; しかし、このコードは型安全ではなく、存在しないプロパティがある場合や必要なプロパティが不足している場合であってもエラーにならない。そのため嘘の型情報を付与してしまい、実質的に型安全でなくなる。 これを防ぐために以前はliteralという簡単なヘルパー関数を作って対応していた。 type User = { id: string; name: string; }; function literal<T>(value: T): T { return value; } const value2 = { user: literal<User>({ id