Ich habe das so verstanden wie:
type GenericExample<T> = T extends (infer U) ? U : 'bar';
entspricht:
type GenericExample<T> = T extends T ? T : 'bar';
Aber wenn die Dinge aufwändiger werden, beschwert sich 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"'.
Ich möchte also fragen, warum dies falsch ist: In diesem speziellen Fall sollte eine Verteilung über die Gewerkschaft stattfinden, also sollte der abgeleitete U
Typ text
dann date
und so weiter sein. Was bedeutet es also T extends (infer U)
wirklich und wann wäre es angebracht, es zu verwenden?
infer
Schlüsselworts kenne, aber ich habe diese seltsame Frage gestellt, weil ich festgestellt habe, dass sieT extends (infer U)
in einem bedingten Typ gültig ist. Ich war darüber überrascht und begann zu untersuchen.