generated at
in演算子やhasOwnPropertyで型の絞り込みをせず、Taggue Unionを使う

今まで普通に後者を使っていたので、前者の問題が起きるの見てなるほどとなったmrsekut


こういう型を定義した時
ts
type GitRepository = | { url: string } | { owner: string; name: string };
こんな値があると、これは、前者として解釈される
ts
const repo = { owner: "susisu", name: "typefuck", url: 666, };
GitRepository を引数にとって、in演算子で分岐している実装があるとバグる


自分が書いたコード見てみたら、
type guardする関数を書く時
ちょうどfetchしてきた値を検証する時
とかで使ってたmrsekut
前者は修正できる
後者は仕方ない気もする