Typescript Sürüm 2.4 ile tanıtılan Zayıf Tür Algılamayı devre dışı bırakmanın bir yolu var mı?
Typescript sürüm 2.4 ile zayıf tip algılama eklendi. Şimdi katılıyorum, bu harika bir özellik ve bir değeri, tipin isteğe bağlı özellikleriyle tek bir eşleşme sağlamayan bir tipe atadığınızda birçok hatayı yakalamanıza yardımcı olacak.
Ne yazık ki, başlangıçta Javascript ile yazılmış ve ardından Typescript'e taşınmış büyük bir proje için, zayıf tip boşluğu kullanılan durumlar olacaktır.
TS 2.4'e kolay bir geçişe ve ardından tüm zayıf tip ihlallerinin kademeli olarak kaldırılmasına izin vermek için - geçici olarak zayıf tip tespitini devre dışı bırakacak bir bayrak veya hile bilen var mı?
Cevap #1
Bir derleyici bayrağı yok, ama size ts-migrate önerabilirim. Mevcut js kodunuzu, çıkarım çalışmadığı yerlerde any kullanarak ts koduna dönüştürecektir.
Cevap #2
Genellikle bu hata, tümüyle isteğe bağlı tiplerin kesişmesi durumunda (sadece isteğe bağlı özelliklere sahip nesne) atılır.
Bazen genel kütüphane kodu yazarken, kesişim sonucunda tamamen opsiyonel bir tür elde edilse bile, yapmak istediğiniz bir şeydir.
Normal TS kesişimleri zayıf tiplerin kesişmesine izin vermez, ancak kesişimi kendiniz uygulayabilirsiniz:
export type WeakIntersect<T, U> = Record<string, never> extends T
? Record<string, never> extends U
? T & U // fallback to compiler check for weak types
: U
: Record<string, never> extends U
? T
: T & U
FullyOptional1 & FullyOptional2 // error
WeakIntersect<FullyOptional1, FullyOptional2> // ok
Zayıf bir tür üzerinde extends kullanırken hatadan kaçınmak da mümkündür:
export type AllowWeakType<T> = Record<string, never> extends T ? any : T
T extends FullyOptional // error
T extends AllowWeakType<FullyOptional> // ok
