🔍【TypeScript】Conditional Typeで型の条件分岐を行う2022/05/16に公開2023/02/275件TypeScripttechDiscussionクロパンダ2022/06/16Union distribution の説明ですが、以下で X1 が boolean ではなく false になるので間違えていませんか…? type X1 = string | number extends string ? true:false; type X2 = (string extends string ? true : false) | (number extends string ? true : false); クロパンダ2022/06/16https://qiita.com/uhyo/items/da21e2b3c10c8a03952f#分配されるのは型変数のみ もう1つ注意しなければいけない点があり、これが条件型の大変ややこしいところでもあります。それは、今まで説明したようなunion distributionが発生するのは条件部分の型が型変数である場合のみであるという点です。 これっぽいです 返信を追加oreo29902022/06/16pandanoir様 ご指摘ありがとうございます。また、誤認しており大変申し訳ありませんでした、、!Union distribution部分を修正させていただきました! このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!! 返信を追加LEF2023/02/25お疲れ様です! 有益な記事を書いて頂き、ありがとうございます🙏 コード例を読んでいたのですが、一点、誤りと思われる箇所を発見したのでご連絡致します。 ("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になるからです。 ご確認頂けたら嬉しいです✨ oreo29902023/02/27LEF様 typoしておりました、、修正しております! このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!! 返信を追加
クロパンダ2022/06/16Union distribution の説明ですが、以下で X1 が boolean ではなく false になるので間違えていませんか…? type X1 = string | number extends string ? true:false; type X2 = (string extends string ? true : false) | (number extends string ? true : false); クロパンダ2022/06/16https://qiita.com/uhyo/items/da21e2b3c10c8a03952f#分配されるのは型変数のみ もう1つ注意しなければいけない点があり、これが条件型の大変ややこしいところでもあります。それは、今まで説明したようなunion distributionが発生するのは条件部分の型が型変数である場合のみであるという点です。 これっぽいです 返信を追加
クロパンダ2022/06/16https://qiita.com/uhyo/items/da21e2b3c10c8a03952f#分配されるのは型変数のみ もう1つ注意しなければいけない点があり、これが条件型の大変ややこしいところでもあります。それは、今まで説明したようなunion distributionが発生するのは条件部分の型が型変数である場合のみであるという点です。 これっぽいです
oreo29902022/06/16pandanoir様 ご指摘ありがとうございます。また、誤認しており大変申し訳ありませんでした、、!Union distribution部分を修正させていただきました! このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!! 返信を追加
LEF2023/02/25お疲れ様です! 有益な記事を書いて頂き、ありがとうございます🙏 コード例を読んでいたのですが、一点、誤りと思われる箇所を発見したのでご連絡致します。 ("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になるからです。 ご確認頂けたら嬉しいです✨ oreo29902023/02/27LEF様 typoしておりました、、修正しております! このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!! 返信を追加
Discussion
Union distribution の説明ですが、以下で X1 が
booleanではなくfalseになるので間違えていませんか…?これっぽいです
pandanoir様
ご指摘ありがとうございます。また、誤認しており大変申し訳ありませんでした、、!Union distribution部分を修正させていただきました!
このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!!
お疲れ様です! 有益な記事を書いて頂き、ありがとうございます🙏
コード例を読んでいたのですが、一点、誤りと思われる箇所を発見したのでご連絡致します。
となっているのですが、これは
が正しい形だと思われます。
type MyExtract<T, U> = T extends U ? T : never;と型定義をしているので、"A"のときは"A" : neverになり、"B"のときは"B" : neverになるからです。ご確認頂けたら嬉しいです✨
LEF様
typoしておりました、、修正しております!
このようなご指摘いただけるのは大変嬉しいです、ありがとうございます!!