capypad
0 Tage Serie
typescript / expert
Snippet

Präzise Validierung mit dem 'satisfies' Operator

Der 'satisfies'-Operator validiert, ob ein Objekt einem Typ entspricht, ohne den inferierten Typ zu erweitern. Dies erlaubt es, spezifische Literal-Informationen zu behalten (z.B. dass 'red' ein Tuple ist), während sichergestellt wird, dass das Objekt einem allgemeinen Interface folgt.

snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
11
type Colors = "red" | "green" | "blue";
type RGB = [number, number, number];
 
const palette = {
red: [255, 0, 0],
green: "#00ff00",
blue: [0, 0, 255]
} satisfies Record<Colors, RGB | string>;
 
// palette.red is inferred as [number, number, number], not string | RGB
const redValue = palette.red[0];
Erklärung
1
satisfies Record<Colors, RGB | string>
Prüft die Kompatibilität mit dem Record-Typ, ohne die spezifisch inferierten Formen der Eigenschaften zu überschreiben.
2
palette.red[0]
Sicherer Zugriff ist möglich, da 'satisfies' das Wissen bewahrt hat, dass 'red' exakt ein RGB-Tuple ist.