Hva er prototype i Typescript?
I lib.d.ts kan vi finne følgende kodebit:
interface Error {
name: string;
message: string;
}
interface ErrorConstructor {
new (message?: string): Error;
(message?: string): Error;
prototype: Error;
}
declare var Error: ErrorConstructor;
Hva er betydningen av prototype-egenskapen på ErrorConstructor?
Svar #1
Det er ingen spesiell betydning av en prototype-egenskap i TypeScript utover den vanlige spesielle betydningen av prototype-egenskapen til JavaScript-konstruktører.
I denne koden settes prototype-egenskapen til ErrorConstructor-typen/-grensesnittet for å sikre at enhver kode som direkte får tilgang til ErrorConstructor.prototype vil få riktig typeinformasjon for den egenskapen.
I kontrast definerer new-signaturen til ErrorConstructor hva typen til et objekt som opprettes med et new-anrop vil være. new-returverdien til en konstruktør og prototype til konstruktøren er navngitt de samme typene, men JavaScript tillater konstruktører å returnere verdier som ikke er av deres egen type, så skillet er nødvendig for korrekt typing av all mulig JavaScript-kode.