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.

Relaterte artikler