Après avoir utilisé tapuscrit deux ans: il vaut la peine le recommander?

Auteur | Kamil Zagrabski

Traducteur | ignorance

Il y a deux ans, où j'étais une petite équipe agile démarrer un nouveau projet. service de micro, Docker, React, Redux, ces choses fantaisie doivent dépenser.

Je possède une certaine expérience dans ces technologies front-end, parce que je passé un an dans un grand React projets développés par plus de 20 développeurs avant la fin de l'année dernière. Cela est très difficile pour moi. À ce moment-là, nous avons rencontré beaucoup de problèmes: problèmes la cohésion au sein du modèle, les bibliothèques de code se développent, complexes et difficiles à maintenir l'API, l'interface est incohérente, difficile de suivre l'exception de l'exécution.

Avant de commencer un nouveau projet j'ai décidé de trouver un moyen de résoudre ces problèmes. Je pense que peut-être le problème se trouve dans le langage de programmation lui-même, car il est un peu trop souple et tolérant. Vous pouvez saisir quoi que ce soit, parce que aucune compilation, aucune contrainte préalable de vérification et exécuter le code, de sorte que le paquet peut contenir un bogue sérieux.

Puis j'ai rencontré Flowtype et tapuscrit. Après une brève évaluation, j'ai décidé d'utiliser tapuscrit. Deux ans plus tard, maintenant, je peux vous dire - c'est un bon choix pour ce projet et pour ma carrière. Cependant, si vous pensez que la vie des développeurs dactylographiée de c'est la façon dont les fleurs, alors vous feriez mieux de lire ce mot de l'article.

Dans cet article, je ne vais pas détailler les caractéristiques dactylographiés ou introduction approfondie pour construire le projet. Je voudrais dire des avantages et des inconvénients tapuscrit. Je voudrais dire quelque chose au sujet de la pire expérience que je ressentais dans le processus d'utilisation du tapuscrit, puis introduire un peu tapuscrit je pense que les caractéristiques les plus utiles.

projet de construction

Parce qu'il ya eu devant moi une certaine expérience et React Redux, donc je veux utiliser une configuration similaire --Webpack dans un nouveau projet basé sur ces expériences, Babel, scénario NPM, Jest, Linter, mais le soutien supplémentaire tapuscrit.

Si vous êtes confronté à une situation similaire avec moi, je vous assure: Il est certainement pas simplement modifier la configuration d'une entrée de webpack chargeur si simple. Je dois prévoir la TS configuration spéciale, remplacer ESLint, intégré chargeur et tapuscrit Babel TSLint, sera intégré dans le Jest TS.

Bientôt, quelques-unes des choses décevantes se produisent. configuration TS n'est pas simple, « et puis copiez le test » stratégie ne sont pas toujours bien.

Même le tsconfig.json ajouté au projet de telles choses doivent être soigneusement la documentation de référence.

De plus, il y a quelques problèmes Jest et modules CSS. Tôt ou tard, vous rencontrerez ces problèmes. Je ne pense pas que nous pouvons maintenant abandonné Babel Polyfill le --TypeScript pas fourni de nouvelles fonctions, ni convertira aux nouveaux navigateurs plus anciens API peuvent comprendre le code.

Donc, mon conseil est - si vous pouvez, pensez à utiliser certains des projets lancés ou TS de support d'outils CLI, et de se sauver de la configuration complexe du projet.

support Library

Mon autre expérience très désagréable avec un certain nombre de bibliothèques de soutien connexes tapuscrit.

Si vous êtes le paquet NPM auteur, vous fournirez généralement prêt à utiliser package JavaScript. Parfois, vous ES6 code source ouvert. Si vous voulez la bibliothèque pour soutenir tapuscrit, vous devez fournir la définition de type. Il est contient simplement un module, nommé contents déclaratives de l'espace de fichiers, les classes, les méthodes, les fonctions, et ainsi de suite. Tapuscrit module ne peut utiliser le contenu décrit dans le fichier, et ne peut être utilisé en les déclarant de la manière indiquée. Malheureusement, la connexion généralement pas stricte entre le code source et le fichier de déclaration. Ils ne peuvent pas être compatibles ou pas à jour, ou manquant.

Pour moi, la perte d'une déclaration n'est pas un gros problème. La plupart des auteurs de bibliothèque populaire ou de la communauté seront prêts à saisir les définitions. Si le paquet que vous utilisez ne dispose pas d'un tel fichier, utilisez l'autre, il y a beaucoup sur le paquet de NPM fournit la même fonctionnalité. Vous pouvez également préparer un « virtuel » définir vos propres, ou créer vos propres définitions, et contribuer à la communauté open source.

Dans tous les cas, il y a un autre problème plus grave - certaines des déclarations sont inexactes ou périmées. Si vous rencontrez ce problème, pour résoudre ce problème est pas si facile. Vous pouvez utiliser l'ancienne version du paquet, ou se fixer, ou attendre auteurs à la mise à jour. Mais parfois, ils réagissent rapidement, parfois très lent.

Soit dit en passant, je suis aussi d'un certain paquet simple. Croyez-moi, même si l'intention est bonne kit de développement, je reste va inévitablement oublier de nouvelles fonctionnalités et des définitions de type pour la synchronisation.

routine

Maintenant que quelques-uns des bons aspects. Après avoir sélectionné un projet et construire une bonne bibliothèque avec le soutien de bons TS, vous pouvez profiter des fonctions puissantes portées par le type de langage. Si vous n'utilisez pas l'expérience de cette langue, il peut se sentir un peu étrange au début. Il tapuscrit ya de nombreuses fonctionnalités dans le JavaScript en cours ne sont pas disponibles. Ensuite, je vais décrire les caractéristiques les plus utiles à mon avis.

type

TS type statique est les fonctions les plus utilisées. Si vous n'utilisez pas typage strict, l'utilisation tapuscrit n'a pas de sens. Bien sûr, vous pouvez également utiliser la tolérance type « any », ce qui signifie « Je ne me soucie pas de cette chose est ce type, il peut être un nombre, il pourrait être un tableau de chaînes. » Mais honnêtement, si vous voulez écrire le code, aussi bon que le JavaScript utilisation directe.

Type de codage peut améliorer la vitesse, écrire un code plus sûr. Vous pouvez dire au compilateur: « Ce citerais un nombre constant », si vous essayez de l'utiliser comme un tableau ou une chaîne, compilateur TS vous demandera une erreur. En gros, vous pouvez toujours utiliser ces objets tout ce que vous voulez faire, comme en JavaScript, mais maintenant votre opération plus sûre que jamais, plus facile à comprendre.

Ci-dessous vous voyez quelque chose de base, mais très puissant, pour les types plus avancés, s'il vous plaît se référer à la documentation:

https://www.typescriptlang.org/docs/handbook/advanced-types.html.

En plus du type bien connu, comme les numéros ou les chaînes, tapuscrit offre également l'énumération.

Vous pouvez utiliser les types intégrés, comme la date ou erreur. Les conseils de code peuvent aider à atteindre plus rapidement, une programmation plus sûre.

interface

Si vous pensez que le type est un « changeur de jeu », l'interface elle? L'interface peut vous aider à mieux écrire du code, parce que vous pouvez utiliser le contrat définissent entre elles l'objet. J'ai créé beaucoup d'interfaces, ils sont partout. Parfois, je mets l'interface sur un fichier dédié.

J'utilise principalement l'interface pour décrire des objets, des classes, des fonctions et des paramètres. Vous pouvez également les partager entre les modules et les traiter comme le code source de la même entité. Vous avez seulement besoin de se souvenir - sans interfaces sont en cours d'exécution, il est très facile d'oublier. C'est pourquoi dans certains cas, les classes au lieu d'interfaces (par exemple angulaire d'injection de dépendance) seront mieux. Le regard Let quelques exemples d'interfaces réelles:

Sur la gauche, - le type de retour mal réalisé. Dans le bon code --VS vous indiquera immédiatement le code erreur existe.

Sur la gauche - une classe implémente erreur étendu Driver Interface Interface utilisateur (voir ci-dessus). A droite - le message d'erreur.

catégorie

ES6 propose des cours, de sorte que vous auriez pu les utiliser avant. Mais dactylographiée, la classe offre quelques fonctionnalités supplémentaires, ils peuvent également apparaître dans les futures versions de la EcmaScript. Dans TS, vous permet de définir une classe abstraite, les attributs de classe peuvent être décrits comme statique, en lecture seule ou privé, peut étendre la classe et laisser la classe qui implémente l'interface. Je ne veux pas la différence entre la classe TS classe et ES6 décrit en détail, parce qu'à la fin ils auront un code JavaScript similaire (après la compilation et la conversion). Dans le TS, la classe est une manière élégante et efficace aux droits de code de package, ils sont mis en uvre avec d'autres langues (par exemple, Java) sont très similaires.

Bien sûr, tapuscrit il y a beaucoup de nouvelles choses, comme les génériques (vous les utiliserez), énumération (peut utiliser en interne), namespaces, soutien JSX, et ainsi de suite. Mais vous n'avez pas besoin de les utiliser dans un démarrage complet, il suffit d'utiliser les fonctions de base mentionnées ci-dessus peuvent rendre votre qualité de code est améliorée.

Dactylographiée, vous pouvez utiliser une classe abstraite et d'autres caractéristiques. Pour plus d'informations sur les classes abstraites Voir

https://www.typescriptlang.org/docs/handbook/classes.html. .

Tapuscrit soutient privé, public et des méthodes protégées et l'attribut lecture seule. Classe peut implémenter une interface ou d'étendre d'autres classes.

code qualité

Pourquoi utiliser tapuscrit peut améliorer la qualité du code?

  • Éviter certaines erreurs d'exécution très ennuyeux parce que les erreurs de nom de paramètre ou entrée du nom de variable;
  • Vous pouvez créer un contrat clair entre les objets;
  • Vous pouvez obtenir naturellement les membres privés ou classes;
  • Le compilateur donnera une rétroaction immédiate, beaucoup d'erreurs peut être pris à la phase de compilation, plutôt qu'au moment de l'exécution;
  • Non-JS plus facile pour les développeurs de lire et de comprendre le code;
  • Vous pouvez utiliser les caractéristiques de la prochaine version de JavaScript sera fourni;
  • Rend plus facile pour le test unitaire (entassement), parce que vous savez ce que leurs interfaces.

De plus, étant donné que l'IDE fournit un bon support, écrire du code maintenable beaucoup plus facile. Pour dire la vérité, même si vous êtes seul dans le développement d'une petite et moyennes applications, il est difficile de se rappeler quelques semaines après l'argument types d'une fonction ou une interface nouvellement créée est. Vous pouvez creuser la vue de code. Toutefois, si vous avez besoin de votre souris dans l'éditeur planant au-dessus du nom de la fonction, vous pouvez voir ses paramètres il pas mieux? Par exemple, cette fonction accepte « l'âge » comme paramètre, il est un « numéro », et renvoie un « âge » et « name » attribut instance User contient.

Je voudrais dire une autre chose, qui est revue de code. Lorsque vous êtes dans une petite équipe, vous pouvez être seulement un développeur front-end, .net ou Java d'autres membres de l'équipe familiers ne pouvait pas comprendre le code JavaScript. Aucun moyen de type pas rapide. Par exemple - objet « utilisateur » a un attribut « ID », mais il est un nombre ou une chaîne il? Si c'est une chaîne, pourquoi avez-vous appelé les « toString () » méthodes? S'il est un certain nombre, pourquoi voulez-vous ajouter la chaîne « id_ » devant elle alors? Tapuscrit ressemble à un autre type populaire de langage de programmation, et vous mieux, un examen plus précise des codes, revue de code et une meilleure qualité de meilleur moyen de code.

Dans le code --TypeScript gauche. Le bon code --Java. Leur syntaxe est très similaire, ce qui signifie que votre code devrait être plus facilement compris par les développeurs Java.

La courbe d'apprentissage

Enfin, je voudrais dire quelque chose au sujet du tapuscrit. Lorsque vous essayez quelque chose de nouveau, il y a toujours un problème de courbe d'apprentissage. TS courbe d'apprentissage est pas très raide, mais pas très plat. Il y a deux ans, j'ai choisi TS, je pense que ce sera l'occasion d'une langue promettant un bon apprentissage. Je suis sûr que si je l'avais choisi les autres cadres (tels que angulaire) et d'autres langues, je suis déçu et frustré.

résumé

Tapuscrit recommandation vaut la peine? Je pense certainement qu'il vaut la peine. Il peut vous aider à écrire un meilleur code en moins de temps. support IDE car elle est grande, communauté dynamique, la bibliothèque TS définie contient plus que suffisant, et de plus en plus, l'expérience des développeurs est également très bon. Ce sont les meilleurs outils modernes que je connais pour créer des applications Web évolutives. Mais aussi garder à l'esprit que certains des inconvénients mentionnés ci-dessus, autour de ces questions, et la natation dans le monde coloré des langues dans ce type statique.

texte anglais:

https://ecom.software/en/after-two-years-with-typescript-was-it-worth-it/

le plus embarrassant « pays », « roi » en direct dans le château du monde tous les jours, mais seulement trois mètres carrés de terrain
Précédent
La délégation française a visité Zhejiang Xianju « transmettre précieux »: impatient de la profondeur de la coopération
Prochain
2 trois poinçons champ Harden voler signes Akira assemblage 3 m, le bulbe « shift »?
tremblement de terre de Wenchuan dans le Sichuan effondré Yunyan Temple Temple Dongyue, réaménagement et plus tard a été brûlé
Comme pour Voyage en Thaïlande, mais vous ne pouvez pas savoir, des magasins « de routine » un peu plus
Conditions en Afrique est difficile, mais ceux qui travaillent en Afrique, mais ne veulent pas revenir au développement!
« marque Owen Pills » grand retour distal, petit Pierce 38 secondes deux fois pour frapper
2: 0, Owen peut être excité mauvais
Voyage au Vietnam, a dit la laitue fille avec vous, vous savez ce que cela signifie?
Urumqi près de dix mille personnes à participer à la « Journée nationale de l'arbre »
Spurs 20 ans les plus timides « mixtes génie hésitèrent », de Kobe à Durant sont la bête noire
Adieu! Wade est la signature de chaleur tous les employés, photo
leader de la technologie ferroviaire à grande vitesse chinoise dans le monde, mais des amis a dit: le train à grande vitesse européenne ce point, nous ne sommes pas!
Philadelphie est une double limite Dili une limite donnée, Simmons devrait « écouter assez de conseils pour manger »