Przejdź do treści
webtype.orgInstanceType

    ↑↓ 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 5.9.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.