Anda dapat menggunakan tsx
alih-alih ts
dengan sedikit perbedaan. tsx
jelas memungkinkan penggunaan jsx
tag di dalam skrip ketikan, tetapi ini memperkenalkan beberapa ambiguitas penguraian yang membuat tsx sedikit berbeda. Menurut pengalaman saya, perbedaan ini tidak terlalu besar:
Ketik pernyataan dengan <>
tidak berfungsi karena itu adalah penanda untuk tag jsx.
Ketik memiliki dua sintaks untuk pernyataan tipe. Keduanya melakukan hal yang persis sama tetapi yang satu dapat digunakan di tsx, yang lainnya tidak:
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts
Saya akan menggunakan as
alih-alih <>
dalam ts
file juga untuk konsistensi. as
sebenarnya diperkenalkan di Typecript karena <>
tidak dapat digunakan ditsx
Fungsi panah umum tanpa batasan tidak diurai dengan benar
Fungsi panah di bawah ini baik-baik saja ts
tetapi kesalahan dalam tsx
as <T>
ditafsirkan sebagai awal dari tag ditsx
const fn = <T>(a: T) => a
Anda bisa menyiasatinya dengan menambahkan batasan atau tidak menggunakan fungsi panah:
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;}
Catatan
Meskipun Anda dapat menggunakan tsx daripada ts, saya akan merekomendasikan untuk tidak melakukannya. Konvensi adalah hal yang kuat, orang-orang berasosiasi tsx
dengan jsx
dan mungkin akan terkejut Anda tidak memiliki jsx
tag apa pun , sebaiknya jaga agar kejutan pengembang seminimal mungkin.
Sementara ambiguitas di atas (meskipun mungkin bukan daftar lengkap) tidak besar, mereka mungkin memainkan peran besar dalam keputusan untuk menggunakan ekstensi file khusus untuk sintaks baru agar ts
file tetap kompatibel.