TypeScript · Senior · Frage 31 von 75
Wie bekommt man aus einem Wert den Elementtyp eines Set<T> oder Map<K, V>?
const ids = new Set(['a', 'b']);
type Id = typeof ids extends Set<infer T> ? T : never;- 1Mit einem bedingten Typ mit
inferauf dem MusterSet<infer T> - 2Mit dem Utility
ElementType<typeof ids>aus der Standardbibliothek - 3Mit dem indizierten Zugriff
(typeof ids)[number]
Antwort zeigen
Richtige Antwort: Mit einem bedingten Typ mit infer auf dem Muster Set<infer T>
Erklärung
Set hat keine numerische Index-Signatur, also funktioniert [number] nicht. Ein bedingter Typ mit infer zieht den Parameter jedes Generics heraus: Map<infer K, infer V>, Promise<infer R>. Ein eingebautes Utility ElementType gibt es nicht. Hier ist Id vom Typ string.