前提
type-challengesに挑戦しています。
easyのExcludeが分からずに困っています。
Excludeを使用せずに同じ機能を持ったtypeを作る課題です。以下が答えです。
js
1type MyExclude<T, U> = T extends U ? never : T
分からないこと
extendsについて
extendsを紹介しているサイトをいくつか読みましたが、今回の問題でいくとT extends U
はUを拡張したものがTという事になると思います。なのでUはTを内包するとい事だ理解しています。しかし、それだと今回の問題ではおかしいのではないでしょうか?Exclude<T, U>はTに与えらてた値に対してUを取り除くだと思うので、Tを拡張したものがUのイメージです。
ts
1// 今回の場合Foobarbazの中から指定されたものを除外するのでFoobarbazが起点になっているのでUは拡張されていないのでは? 2type MyExclude<T, U> = T extends U ? never : T 3 4type Foobarbaz = foo| bar | baz 5 6MyExclude<Foobarbaz, baz> 7
試したこと
extendsについて
https://typescriptbook.jp/reference/generics/type-parameter-constraint
https://zenn.dev/miz_dev/articles/1519a995ae306a#generics-%E3%81%AE-extends-%E3%81%AB%E3%82%88%E3%82%8B%E5%9E%8B%E5%88%B6%E7%B4%84
neverについて
https://numb86-tech.hatenablog.com/entry/2020/02/06/214324
https://typescriptbook.jp/reference/statements/never
Conditional Typesの分配について
https://zenn.dev/oreo2990/articles/1040312d7af066#1-1-conditional-type
補足情報(FW/ツールのバージョンなど)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/14 01:53