Avatar
Avatar
Iceman
これはintersection typeの話ですが、 type AAA = string & { foo: null }; type BBB = Omit<AAA, "foo">; function useString(str: string) {} function useBBB(bbb: BBB) { useString(bbb); // Argument of type 'BBB' is not assignable to parameter of type 'string'. } fooをうまく剥がせなかったりとか。
omochimetaru 9/21/2023 1:42 AM
これはなんでだめなんだ、深淵に踏み込んでそう
1:42 AM
う〜〜ん。
1:43 AM
確かにnominal + unionで簡単になりそうまでは同意なんですが、 一方でunionという概念自体がstructuralなので、 中途半端にunionだけ入れた状態では変な困りが生じそうな気がしますねえ
1:43 AM
メインの型の方もstructuralに行かないと。