私は次のようなことを理解しました:
type GenericExample<T> = T extends (infer U) ? U : 'bar';
等しい:
type GenericExample<T> = T extends T ? T : 'bar';
しかし、物事がより複雑になると、TypeScriptは不平を言います。
type Types = 'text' | 'date' | 'articles' | 'params';
type MyExperiment<Type extends Types> = { t : Type };
type MyExperimentsUnion = Types extends (infer U) ? MyExperiment<U> : never;
// Type 'U' does not satisfy the constraint 'Types'.
// Type 'U' is not assignable to type '"params"'.
組合に対するこの特定のケースの分布に推測されて、場所を取る必要があります。私は、これは間違っている理由をお願いしたいと思いますので、U
タイプがあるべきtext
、その後、date
というように。それで、T extends (infer U)
実際には何を意味し、いつそれを使用するのが適切でしょうか?
infer
キーワードの一般的な目的は知っていると言わざるを得ませんがT extends (infer U)
、条件付きタイプで有効であることを発見したのでこの奇妙な質問をしました。そのことに驚いて調査を開始しました。