TypeScript'te constructor türünü çıkar


TypeScript'te bir sınıfın yapıcı türünü çıkarmak mümkün mü? Bunu denedim ama işe yaramıyor gibi görünüyor:

type Constructor<K> = K extends { new: infer T } ? T : any;

Cevap #1

Bir sınıf türünden örnek türünü çıkarmanıza olanak tanıyan, InstanceType adı verilen önceden tanımlanmış bir koşullu tür zaten vardır.

class A { private x: any}

type AInstance = InstanceType<typeof A> // same as A

Bu türün tanımı şudur:

type InstanceType<T extends new (...args: any) => any> = T extends new (...args: any) => infer R ? R : any;

Cevap #2

Bunu çıkarmaya çalışmak yerine, sınıf türlerine yapılandırıcı fonksiyonlarıyla bu şekilde başvurabilir misiniz?

type Constructor<K> = { new(): K };

const x: Constructor<String> = String; 

const s = new x();

İlgili makaleler