Exportovanie pomocných funkcií v TypeScripte?
Snažím sa urobiť toto (Pseudo kód):
export const isDefined:Function<boolean> = ((value:any)) => {
return !(value==null);
};
Funkcia isDefined vracia boolean, ak hodnota argumentu nie je null alebo undefined, a ako argument prijíma typ any. Máte nejaké nápady, ako ju dostať do chodu?
Odpoveď č. 1
Odporúčanie: vyhýbajte sa používaniu Function, kedykoľvek je to možné. Zruší to bezpečnosť typov:
// these should error, but they don't
isDefined()
isDefined(1, 2, 3, 'too', 'many', 'args')
Aby ste ušetrili typový podpis, zbavte sa Function. Rovnako môžete použiť != pre jednoduchosť:
export const isDefined = (value: any): boolean => {
return value != null
}
Ako bonus môžete zneužívať generiká, aby bola funkcia o niečo inteligentnejšia. Tu funkcia používa generikum T na odhadnutie typu toho, čo sa do nej posiela, potom používa typovú stráž, aby zúžila typ v niektorých kontextoch, napr. v if príkaze. (Poznámka: definoval som ju ako function, aby fungovala v súboroch .tsx. Jednogenerické šípkové funkcie nemôžu byť analyzované kvôli nejednoznačnostiam s JSX.)
export function isDefined<T>(value: T | null | undefined): value is T {
return value != null
}
declare const message: string | undefined
if (isDefined(message)) {
message // here, message is string
} else {
message // here, message is undefined
}
Odpoveď č. 2
OK - Myslím, že som to konečne pochopil:
export const isDefined: Function = (value: any): boolean => {
return !(value == null);
};
