generated at
objectの具体的な形にアクセスすると矛盾が生じる


Exact型がない状況下では、propertyの全取得をしたら、型と異なるものが含まれている可能性がある

参考
この記事が詳しい



これたぶん厳密に書き出すと割と多くのパターンがあると思うmrsekut
↓に書いているのだけでは足りない
optional? を使ったときや、 readonly を使ったときなどの分岐も考えられるし



ts
const x = { foo: 42, bar: 'xxx' }; const y: { foo: number } = x; // 型としてはok console.log(Object.entries(y)); // [["foo", 42], ["bar", "xxx"]]. 想定しているものと異なる



以下のようなmethodを使わない
あるいは、使用時に型が壊れる可能性に気をつけるmrsekut
objectのpropertyの存在判定をするもの
propertyの列挙をするもの
列挙したpropertyを利用するもの



この内、 optional? に関係するものは、
optional?の使用を避けることで回避できる




下記の場合なら使用しても良さそう
アクセスしようとしているobjectが、 as const で定義された実変数になっている
etc.

しかし、コードを眺めて
「ここのObject.valuesは安全だからokだけど、こっちは駄目だね」というのを、
コンパイラは教えてくれず、人間が判断しないといけないので、すごくダルいなmrsekut

project全体を、fp-tsとかに統一すれば、上のようなmethodを一切使わなくても書けるようになるんじゃないかな