🔍

【TypeScript】Conditional Typeで型の条件分岐を行う

に公開
5

Discussion

クロパンダクロパンダ

Union distribution の説明ですが、以下で X1 が boolean ではなく false になるので間違えていませんか…?

type X1 = string | number extends string ? true:false;
type X2 = (string extends string ? true : false) | (number extends string ? true : false);
oreo2990oreo2990

pandanoir様
ご指摘ありがとうございます。また、誤認しており大変申し訳ありませんでした、、!Union distribution部分を修正させていただきました!

このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!!

LEFLEF

お疲れ様です! 有益な記事を書いて頂き、ありがとうございます🙏

コード例を読んでいたのですが、一点、誤りと思われる箇所を発見したのでご連絡致します。

("S" extends "S" | "A" ? "S" : never) | ("A" extends "S" | "A" ? "S" : never) | ("B" extends "S" | "A" ? "S" : never)

となっているのですが、これは

("S" extends "S" | "A" ? "S" : never) | ("A" extends "S" | "A" ? "A" : never) | ("B" extends "S" | "A" ? "B" : never)

が正しい形だと思われます。

type MyExtract<T, U> = T extends U ? T : never;と型定義をしているので、"A"のときは"A" : neverになり、"B"のときは"B" : neverになるからです。

ご確認頂けたら嬉しいです✨

oreo2990oreo2990

LEF様
typoしておりました、、修正しております!
このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!!