typescript - Hur definierar man egenskaper som kan användas på en klass innan den konstrueras (t.ex. för en fabriksmetod)?
Exempel på kod:
class User {
name: String;
constructor(name: String) {
this.name = name;
}
}
User.get = (name):User => {
return new User(name);
}
Användning:
// Should return User bob
var user = User.get("bob")
// Should also return User bob
var user = new User("bob")
Fel:
Property 'get' does not exist on type 'typeof User'.ts(2339)
Jag vill veta hur man definierar denna egenskap så att jag inte får detta fel. Ja, jag vet att jag bara kan definiera get-funktionen inuti klassen User, men av andra skäl vill jag kunna kalla på get-funktionen på själva klassen.
Svar #1
Deklarera get (eller kanske create) som en statisk funktion av User:
class User {
static get(name: string): User {
return new User(name);
}
name: string;
constructor(name: string) {
this.name = name;
}
}
Nu borde const user=User.get("bob"); fungera. Jag hoppas att detta passar väl in i ditt sista stycke i din fråga.
