Não entendi muito bem qual é o propósito do satisfies
. O que seria esse "error"? Seria um erro em tempo de compilação?
Isso significa dizer que quando eu coloco o satifies
dispensa um if
para verificar o tipo da variável?
Não entendi muito bem qual é o propósito do satisfies
. O que seria esse "error"? Seria um erro em tempo de compilação?
Isso significa dizer que quando eu coloco o satifies
dispensa um if
para verificar o tipo da variável?
Adaptando o exemplo da publicação, não ficou claro para mim também, porque é possível fazer isso no TypeScript 4.8.4:
type RGB = [red: number, green: number, blue: number];
type Color = RGB | string;
const myColor: Color = 'blue'; // ok
const myIncorrectColor: Color = 420; // erro
myColor.toUpperCase(); // ok
Mas lendo o issue sobre essa feature, descobri um cenário que parece fazer sentido. Por exemplo:
type Keys = 'a' | 'b' | 'c' | 'd';
const p = {
a: 0,
b: "hello",
x: 8 // erro
} satisfies Partial<Record<Keys, unknown>>;
let a = p.a.toFixed(); // ok, a = number
let b = p.b.substr(1); // ok, b = string
let d = p.d; // erro
type Keys = 'a' | 'b' | 'c' | 'd';
const p: Partial<Record<Keys, unknown>> = {
a: 0,
b: "hello",
x: 8 // erro
};
let a = p.a.toFixed(); // erro, mas deveria funcionar
let b = p.b.substr(1); // erro, mas deveria funcionar
let d = p.d; // funcionou, mas deveria dar erro
E tem uma discussão bem mais profunda na issue com vários exemplos.
Mais ou menos isso, voce consegue uma inferencia melhor pois ele vai saber o tipo, no ligar de ter um "or" entre os tipos possiveis.