Ви можете використовувати tsxзамість tsдуже невеликої різниці. tsxОчевидно, дозволяє використовувати jsxтеги всередині typecript, але це вносить деякі неоднозначності розбору, які роблять tsx трохи іншим. На мій досвід, ці відмінності не дуже великі:
Введіть твердження, <>що не працюють, оскільки це маркер тегу jsx.
Typescript має два синтаксиси для тверджень типу. Вони обидва роблять точно те саме, але один з них можна використовувати в tsx, а інший - не:
let a: any;
let s = a as string // ok in tsx and ts
let s2 = <string>a // only valid in ts
Я хотів би використовувати asзамість <>в tsфайлах , а також для забезпечення узгодженості. asбув фактично введений у Typescript, тому що <>він не використовувавсяtsx
Загальні функції стрілок без обмежень неправильно розбираються
Функція стрілка нижче нормально в , tsале помилка в tsxякості <T>інтерпретується як початок тега вtsx
const fn = <T>(a: T) => a
Їх можна обійти, додавши обмеження або не скориставшись функцією стрілки:
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;}
Примітка
Хоча ви можете використовувати tsx замість ts, я б рекомендував проти цього. Конвенція є сильною річчю, люди асоціюють tsxз jsxі, ймовірно , будуть здивовані , що ви не маєте ніяких jsxтегів, кращий розробник Keep сюрприз до мінімуму.
Хоча двозначності вище (хоча, ймовірно, не повний список) не великі, вони, ймовірно, зіграли велику роль у рішенні використовувати виділений розширення файлу для нового синтаксису, щоб зберегти tsфайли назад сумісними.