Puoi usare tsxinvece che tscon pochissima differenza. tsxovviamente consente l'uso di jsxtag all'interno del dattiloscritto, ma questo introduce alcune ambiguità di analisi che rendono tsx leggermente diverso. Nella mia esperienza queste differenze non sono molto grandi:
Le asserzioni di tipo con <>non funzionano poiché questo è il marcatore per un tag jsx.
Typescript ha due sintassi per le asserzioni di tipo. Entrambi fanno la stessa identica cosa ma uno è utilizzabile in tsx, l'altro no:
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts
Vorrei usare asal posto di <>in tsfile e per la coerenza. asè stato effettivamente introdotto in Typescript perché <>non era utilizzabile intsx
Le funzioni freccia generiche senza vincoli non vengono analizzate correttamente
La funzione freccia sotto va bene in tsma un errore in tsxcome <T>viene interpretato come l'inizio di un tag intsx
const fn = <T>(a: T) => a
Puoi aggirare questo problema aggiungendo un vincolo o non usando una funzione freccia:
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;}
Nota
Anche se puoi usare tsx invece di ts, ti consiglio di non farlo. Convention è una cosa potente, la gente associa tsxcon jsxe probabilmente saranno sorpresi non si dispone di nessun jsxtag, migliore sorpresa mastio sviluppatore al minimo.
Sebbene le ambiguità di cui sopra (sebbene probabilmente non un elenco completo) non siano grandi, probabilmente hanno giocato un ruolo importante nella decisione di utilizzare un'estensione di file dedicata per la nuova sintassi al fine di mantenere i tsfile compatibili con le versioni precedenti.