typescript - Definiera konstruktörsfunktion (prototypmönster) i TS? Detta har typen any
Jag har snubblat över något som verkar enkelt som jag inte vet hur man fixar. Jag vill använda en enkel konstruktionsfunktion (inte en klass):
const Person = function() {
this.name = 'John'
}
TS-kompilatorn säger:
'this' har implicit typen 'any' eftersom det inte har någon typannotering.
Men jag är inte säker på hur jag kan ange typen för this explicit i det här fallet?
Svar #1
Du kan specificera funktionens this-typ genom att använda en falsk this-parameter som förklaras här. Men detta räcker inte eftersom du också vill att denna funktion ska kunna skapas med new. Typpåstående kan hjälpa här:
interface Person {
name: string
}
interface PersonConstructor {
new(): Person;
};
const Person = function(this: Person) {
this.name = 'John'
} as any as PersonConstructor;
const p = new Person();
Ovanstående är tillåtet på grund av deklarationssammanfogning, så Person är både typ/form och även värde/konstruktör.
Lekplats
