Tôi đã hiểu rằng một cái gì đó như:
type GenericExample<T> = T extends (infer U) ? U : 'bar';
bằng:
type GenericExample<T> = T extends T ? T : 'bar';
Nhưng khi mọi thứ trở nên phức tạp hơn, TypeScript phàn nàn:
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"'.
Vì vậy, tôi muốn hỏi tại sao điều này là sai: trong trường hợp cụ thể này, sự phân phối trên liên minh sẽ diễn ra, vì vậy Uloại suy ra nên text, sau đó datevà vân vân. Vì vậy, những gì T extends (infer U)thực sự có nghĩa là gì và khi nào nó sẽ thích hợp để sử dụng nó?
infertừ khóa, nhưng tôi đã hỏi câu hỏi kỳ lạ này bởi vì tôi phát hiện ra nóT extends (infer U)có giá trị trong một loại điều kiện, tôi đã ngạc nhiên về điều đó và tôi bắt đầu điều tra.