TypeScript'te iki türün uyumsuz olmasını nasıl zorlayabilirim?
TypeScript'te iki tür oluşturmak istiyorum, ikisi de bir sayı:
export type GlobalPortIndex = number;
export type TypePortIndex = number;
Anladığım kadarıyla, TypeScript bunları birbirleriyle tamamen örtüştükleri için karşılıklı uyumlu sayacaktır.
Ama onların uyumsuz olmasını istiyorum, böylece bir şey yazdığımda GlobalPortIndex, sonra ona bir TypePortIndex atamaya çalışırsam bir tür hatası alırım. Bu, kodda karıştırmamamı sağlamak için, örneğin birini diğerini bekleyen bir fonksiyona veremem.
Bunu başarmak için herhangi bir TypeScript hilesi var mı?
Cevap #1
İki sınıfı farklı yapmak için ek bir özellik (veya yöntem) tanımlamanız gerekir:
class GlobalPointerIndex extends Number {
__GlobalPointerIndex: boolean;
}
class TypePortIndex extends Number {
__TypePortIndex: boolean;
}
Cevap #2
Typescript konusunda bir uzman değilim, ama değeri aslında bir sınıfa sarmak ve sonra sınıf tipini statik olarak kontrol etmek daha iyi olmaz mı?
Görünüşe göre bir nesne türünüz GlobalPortIndex ve diğeriyse TypePortIndex, bunlar farklı amaçlara hizmet ediyor.
Veya belki onları enum sözdizimi olarak ayarlamak bu sorunu çözebilir mi?
enum FooKeys {
FOO = 'foo',
BAR = 'bar',
}
// probably all you need, but it's a type alias
type FooType = Record<FooKeys, string>;
Yukarıdaki kod bu gönderiden alınmıştır: TypeScript'te enum değerlerinden bir tür nasıl oluşturulur?
