generated at
Exact型

2022/1/9現在まだ入っていないmrsekut

TypeScriptは構造的部分型を採用していることもあり(?)、recordのpropertyが過剰な場合は型エラーを出さない
過不足のないrecordの型チェックをするのがExact型
2016/12ぐらいからその話はあって今も議論中
ts
interface User { username: string email: string } const user1: User = { username: 'x', email: 'y', foo: 'z' } // いける const user2: Exact<User> = { username: 'x', email: 'y', foo: 'z' } // errorにしたい
ちなみにio-tsならできるmrsekut



互いにextendsをすればできる
ts
type Exact<T, R> = T extends R ? R extends T ? T : never : never



どういうときにExact型がないと困るのか?