typescript - Benzersiz bir sınıf döndüren bir fonksiyonun tipini nasıl belirtirim?
Her seferinde yeni bir sınıf döndüren bir fonksiyonum var, bu bir sınıf fabrikasıdır:
function foo() {
const s = Symbol();
return class {
protected readonly s: typeof s = s;
};
}
const c1 = foo();
const c2 = foo();
const cc: typeof c1 = c2; // Error expected
const i1 = new c1();
const i2 = new c2();
const ii: typeof i1 = i2; // Error expected
oyun alanı
Ama bir çağrının sınıfını veya örneklerini başka bir çağrıya hatasız atayabilirim.
SSS#Sınıflar ne zaman ve neden nominal olur? bölümünde, korumalı veya özel üyelere sahip bir sınıfın, değiştirilemez oldukları anlamında nominal hale geldiği belirtiliyor (aslında tam olarak böyle yazmıyor, ama sanırım fikir bu).
i1 türünün i2 türüne atanamayacağını TypeScript’in tespit edebilmesi için foo yazmanın bir yolu var mı?