Bunun tsxyerine tsçok az farkla kullanabilirsiniz. tsxaçık bir şekilde jsxtypecript içindeki etiketlerin kullanımına izin verir , ancak bu tsx'i biraz farklı kılan bazı ayrıştırma belirsizliklerini ortaya çıkarır. Tecrübelerime göre bu farklılıklar çok büyük değil:
<>Bir jsx etiketinin işaretçisi olduğundan, tür iddiaları çalışmaz.
Typescript, tür iddiaları için iki sözdizimine sahiptir. İkisi de aynı şeyi yapıyor ama biri tsx'de kullanılabilir, diğeri değil:
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts
Ben kullanmak istiyorsunuz asyerine <>de tstutarlılık için de dosyalar. asçünkü aslında daktilo tanıtıldı <>içinde kullanışlı değilditsx
Kısıtlama içermeyen genel ok işlevleri doğru şekilde ayrıştırılmıyor
Aşağıdaki ok fonksiyonu içinde tamam tsama bir hata tsxolarak <T>bir etiket başlangıcı olduğu gibi yorumlanırtsx
const fn = <T>(a: T) => a
Bir sınırlama ekleyerek veya bir ok işlevi kullanmayarak bunu aşabilirsiniz:
const fn = <T extends any>(a: T) => a
const fn = <T,>(a: T) => a // this also works but looks weird IMO
const fn = function<T>(a: T) { return a;}
Not
Ts yerine tsx kullanabilirsiniz, ancak buna karşı tavsiye ederim. Konvansiyon güçlü bir şeydir, insanlar ilişki tsxkurar jsxve muhtemelen herhangi bir jsxetiketiniz olmadığına şaşıracaklar , en iyisi geliştirici sürprizini minimumda tutun.
Yukarıdaki belirsizlikler (muhtemelen tam bir liste olmasa da) büyük olmamakla birlikte, tsdosyaları geriye dönük uyumlu tutmak için yeni sözdizimi için özel bir dosya uzantısı kullanma kararında büyük bir rol oynadılar .