Funkcje
Instance Type
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>→SessionConstructorParameters<typeof Session>→[]InstanceType<typeof Session>['id']→stringGdy 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, boSessionjest już instancją — chodzi ci otypeof 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.

