Przejdź do treści
webtype.orgwebtype.org

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    Funkcje

    InstanceType

    To, co konstruktor produkuje, gdy wywołasz go przez new.

    Czym jest

    Klasowa wersja ReturnType, a istnieje osobno dlatego, że nazwa klasy znaczy dwie rzeczy: wartość konstruktora i typ instancji. typeof Foo to konstruktor; Foo to już instancja. InstanceType liczy się wtedy, gdy masz wyłącznie konstruktor — przekazany jako argument, trzymany w rejestrze, wyprodukowany przez fabrykę.

    Przykłady

    • InstanceType<typeof Session>
      →Session
    • ConstructorParameters<typeof Session>
      →[]
    • InstanceType<typeof Session>['id']
      →string

      Gdy masz już typ instancji, wszystko inne — keyof, dostęp indeksowany, typy mapowane — stosuje się normalnie.

    Każdy rozwinięty typ powyżej wypisał TypeScript 6.0.3, nie ręka człowieka.

    Czego nie robi

    • Nie przyjmuje bezpośrednio nazwy klasy. InstanceType<Session> to błąd, bo Session jest już instancją — chodzi ci o typeof Session.
    • Nie obejmuje składowych statycznych. Te żyją na konstruktorze, czyli na tym, co podałeś, a nie na tym, co dostałeś.

    Wniosek

    Nazwa klasy to dwa typy w jednym słowie. typeof C to konstruktor, C to instancja, a niemal każdy mylący błąd generyka klasowego to te dwa zamienione miejscami.