Ви можете використовувати 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
файли назад сумісними.