Exact型
2022/1/9現在まだ入っていないmrsekut.icon
TypeScriptは構造的部分型を採用していることもあり(?)、recordのpropertyが過剰な場合は型エラーを出さない
過不足のないrecordの型チェックをするのがExact型
2016/12ぐらいからその話はあって今も議論中
code: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.icon 互いにextendsをすればできる
code:ts
type Exact<T, R> = T extends R
? R extends T
? T
: never
: never
どういうときにExact型がないと困るのか?