Bunun tsx
yerine ts
çok az farkla kullanabilirsiniz. tsx
açık bir şekilde jsx
typecript 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 as
yerine <>
de ts
tutarlı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 ts
ama bir hata tsx
olarak <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 tsx
kurar jsx
ve muhtemelen herhangi bir jsx
etiketiniz 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, ts
dosyaları 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 .