Poate TypeScript să-mi spună care șiruri de caractere din codul meu sunt „nesigure”?
Avem șiruri „sigure” în baza noastră de cod TypeScript:
button.on('click', () => {}); // mistyping 'click' is an error
dar și șiruri nesigure:
_.omit(obj, 'a'); // no error if I mistype 'a'
Există o modalitate de a lista astfel de șiruri? Cred că TypeScript are cunoștințele despre acest lucru, dar nu sunt sigur dacă se pot extrage din el.
Răspuns #1
Poți defini un tip care conține doar valori sigure:
export type SafeValue = 'foo' | 'bar' | 'baz';
export function omit(param: SafeValue) {
...
}
omit('a'); // error
Dacă vrei să știi dacă „a” este o proprietate a obj, poți face ceva de genul acesta:
export function omit<T>(object: T, property: keyof T) {
payload[value]; // this statement is safe
}
De exemplu, dacă aveți clasa Persoană:
export class Person {
name: string;
age: number;
}
Declarația keyof Person va fi egală cu 'name' | 'age'.
const person = new Person();
omit<Person>(person, 'age'); // won't emit any error
omit<Person>(person, 'paws'); // will emit an error:
Argumentul de tip „paws” nu poate fi atribuit parametrului de tip „name” | „age”
