Est-il un inconvénient à l'utilisation .la tsx au lieu de .ts de tous les temps à la machine?
Je viens de commencer à travailler sur un projet react avec tapuscrit et de me demander ce que je dois faire régulièrement des fichiers de classe? dois-je utiliser .ts ou .tsx fichiers et puis je ne pouvais pas trouver une raison pour ne pas l'utiliser .tsx fichier de tous les temps, même quand il n'est pas un projet react! Est-il une raison ou une situation spécifique que nous ne devrions pas l'utiliser .tsx fichiers? si non pourquoi tapuscrit de l'équipe ajouter une nouvelle extension?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
tsx
au lieu dets
avec très peu de différence.tsx
permet évidemment de l'utilisation dejsx
balises à l'intérieur de la machine, mais cela introduit une certaine analyse des ambiguïtés qui font de la tsx légèrement différente. Dans mon expérience, ces différences ne sont pas très grandes:Type d'assertions avec
<>
ne fonctionnent pas comme c'est le marqueur d'une jsx tag.Tapuscrit a deux syntaxes pour le type d'assertions. Ils ont tous deux faire exactement la même chose mais on est utilisable dans la tsx, l'autre ne l'est pas:
Je voudrais utiliser
as
au lieu de<>
dans les fichiers ts pour des raisons de cohérence.as
a effectivement été introduit dans la Machine, car<>
n'était pas utilisable danstsx
Générique flèche fonctions avec aucune contrainte ne sont pas analysé correctement
La flèche de la fonction ci-dessous est ok dans
ts
, mais une erreur danstsx
comme<T>
est interprété comme le début d'une balise danstsx
Vous pouvez contourner ce problème, soit en ajoutant une contrainte ou non à l'aide d'une flèche fonction :
Note
Alors que vous pouvez utiliser de la tsx au lieu de ts, je vous recommande contre elle. La Convention est une chose puissante, des gens associent
tsx
avecjsx
et serez probablement surpris d'apprendre que vous n'avez pas dejsx
balises, bien de garder un développeur surprise à un minimum.Tandis que les ambiguïtés ci-dessus (bien que probablement pas une liste complète) ne sont pas gros, ils n'ont probablement joué un grand rôle dans la décision d'utiliser un fichier dédié extension pour la nouvelle syntaxe afin de garder
ts
fichiers compatible.C'est une sorte de convention à utiliser
x
à la fin quand votre JavaScript est dansJSX Harmony
mode. C'est, lorsque cela est valable:Cependant, votre extension de fichier n'a pas vraiment d'importance, aussi longtemps que votre pré-processeurs sont au courant de votre décision (browserify ou webpack). J'ai, pour une, utilisation
.js
pour tous mes JavaScript, même quand ils sont de Réagir. La même chose s'applique pour le Tapuscrit,ts/tsx
.ts
ettsx
. En caractères d'imprimerie le compilateur ne permet JSX syntaxe dans.tsx
fichiers, car la syntaxe crée une certaine ambiguïté avec TS syntaxe (comme le<>
affirmation de la syntaxe), pour résoudre ce problème, le compilateur fait des hypothèses différentes dans untsx
fichier par opposition à unts
fichier. Voir Titien Cernicova-Dragomir de la réponse.La raison .jsx extension a été introduit, c'est que JSX est une extension de la syntaxe JS et donc .jsx fichiers ne contiennent pas de JavaScript valide.
Tapuscrit suit la même convention en introduisant .ts et .tsx extensions. Une pratique, la différence est que .la tsx ne permettent pas de
<Type>
type d'affirmations, car la syntaxe est en conflit avec JSX balises.as Type
affirmations a été présenté comme un remplacement pour<Type>
et considéré comme un choix préféré pour des raisons de cohérence dans les deux .ts et .la bourse de toronto. Dans le cas où le code de .ts est utilisé dans .tsx fichier,<Type>
devront être corrigés.L'utilisation de .tsx extension implique qu'un module est lié à Réagir et utilise JSX de la syntaxe. Dans le cas où il ne l'est pas, l'extension peut donner la fausse impression sur le module de contenu et le rôle dans le projet, c'est l'argument à l'encontre de l'aide .tsx extension par défaut.
D'autre part, si un fichier est lié à Réagir et a de bonnes chances de contenir JSX à un certain point, il peut être nommé .tsx depuis le début pour éviter le changement de nom plus tard.
Par exemple, les fonctions de l'utilitaire qui sont utilisés avec Réagissent composants peut impliquer JSX à tout moment et peut donc être utilisé en toute sécurité .la tsx des noms, alors que Redux de la structure de code n'est pas censé utiliser Réagir directement les composants, peut être utilisé et testé en dehors de Réagir et vous pouvez utiliser .ts noms.
Je crois que avec le .tsx fichiers que vous pourriez utiliser tous les JSX (JavaScript, XML) du code. Alors que dans la .ts fichier que vous ne pouvez simplement utiliser la machine.
.ts
les fichiers ont un<AngleBracket>
l'assertion de type syntaxe qui entre en conflit avec le JSX de la grammaire. Afin d'éviter la rupture d'une tonne de gens, nous utilisons.tsx
pour JSX, et a ajouté l'foo as Bar
syntaxe de ce qui est permis dans les deux.ts
et.tsx
fichiers.Et l'autre est la syntaxe:
Nous pouvons utiliser .ts avec
as-syntax
mais<string>someValue
est cool!