InstanceType<Type>

Pobiera typ obiektu tworzonego przez konstruktor klasy.

Na tej stronie

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. InstanceType zostaw na kod generyczny.
  • Do typu parametrów konstruktora służy ConstructorParameters<typeof Klasa>.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.