TypeScript · Senior · Frage 13 von 75
Was macht infer N extends number in einem bedingten Typ?
type ToNum<S> = S extends `${infer N extends number}` ? N : never;
type X = ToNum<'42'>;- 1Erzeugt einen Compile-Fehler:
inferunterstützt keinextends - 2Wandelt den String
'42'zur Laufzeit perNumber()in eine Zahl um - 3Leitet
Nmit Einschränkung ab -Xwird zum Literaltyp42
Antwort zeigen
Richtige Antwort: Leitet N mit Einschränkung ab - X wird zum Literaltyp 42
Erklärung
Eine Einschränkung an infer (TS 4.7+) prüft nicht nur die Kompatibilität, sondern erlaubt auch, aus einem String einen numerischen Literaltyp abzuleiten. Früher brauchte man dafür verschachtelte bedingte Typen.