TypeScriptTypy narzędziowe
InstanceType<Type>
Pobiera typ obiektu tworzonego przez konstruktor klasy.
Przykład
#TypeScript
class Badge {
constructor(public name: string) {}
}
class Certificate {
constructor(public course: string) {}
}
function create<C extends new (arg: string) => object>(Cls: C, arg: string): InstanceType<C> {
return new Cls(arg) as InstanceType<C>
}
const badge = create(Badge, 'Seria 7 dni')
const cert = create(Certificate, 'HTML i CSS')
console.log(badge.name, '|', cert.course)Wynik
Seria 7 dni | HTML i CSS
Definicja i zastosowanie
#InstanceType<Type> przyjmuje typ konstruktora i zwraca typ obiektu, który on tworzy. Dla typeof Player wynikiem jest typ Player.
W zwykłym kodzie klasa już jest typem swoich instancji, więc InstanceType przydaje się głównie w kodzie generycznym: fabrykach, rejestrach klas i funkcjach, które przyjmują klasę jako argument.
Dla klas abstrakcyjnych trzeba użyć typu abstract new (...args: any) => any w ograniczeniu parametru typu.
Składnia
#Składnia
type Obiekt = InstanceType<typeof Klasa>Parametry typu
#Type
typ konstruktora
Typ klasy lub funkcji konstruującej.
Dobre praktyki
#- W typowym kodzie wystarczy nazwa klasy jako typ.
InstanceTypezostaw na kod generyczny. - Do typu parametrów konstruktora służy
ConstructorParameters<typeof Klasa>.
Powiązane hasła
#- ReturnType<Type>Pobiera typ wartości zwracanej przez funkcję.
- Generyki <T>Typy i funkcje z parametrem typu, działające dla wielu typów bez utraty precyzji.
- abstract classKlasa bazowa, której nie można utworzyć bezpośrednio, z metodami do uzupełnienia przez potomków.
- ConstructorParameters<Type>Pobiera typy parametrów konstruktora klasy jako krotkę.
Widzisz błąd albo brakuje przykładu? Napisz do nas.