Catégories
Astuces et Design

Qu'est-ce que TypeScript? – Magazine Smashing

Nous parlons de TypeScript. Qu'est-ce que c'est et comment cela peut-il nous aider à écrire un meilleur JavaScript? Drew McLellan parle à l'expert Stefan Baumgartner pour le savoir.

Nous parlons de TypeScript. Qu'est-ce que c'est et comment cela peut-il nous aider à écrire un meilleur JavaScript? J'ai parlé à l'expert Stefan Baumgartner pour le savoir.

Afficher les notes

Mise à jour hebdomadaire

Transcription

Photo de Stefan BaumgartnerDrew McLellan: C'est un développeur Web et un amoureux du Web basé à Linz, en Autriche. Travaillant actuellement pour la société de performance Web Dynatrace, il écrit, parle et organise des événements sur le développement de logiciels et les technologies Web. Dernièrement, il est l’auteur du livre TypeScript in 50 Lessons, publié cet automne par Smashing. Nous savons donc qu'il est un expert de TypeScript, mais saviez-vous qu'il peut jongler avec jusqu'à huit belettes enflammées avec les yeux bandés sur un monocycle? Mes amis Smashing, veuillez souhaiter la bienvenue à Stefan Baumgartner. Salut, Stefan. Comment ça va?

Stefan Baumgartner: Salut. Je fracasse. Je n’ai pas fait ça pour moi, donc c’est très intéressant.

A dessiné: C’est incroyable ce que les gens découvrent d’eux-mêmes sur ce podcast.

Stefan: Absolument.

A dessiné: Donc, je voulais vous parler aujourd'hui de TypeScript.

Stefan: Oui.

A dessiné: C’est le sujet de votre nouveau livre, donc clairement, c’est quelque chose que vous avez passé beaucoup de temps à vraiment connaître en profondeur.

Stefan: Oui absolument.

A dessiné: Pour ceux qui n'ont jamais utilisé TypeScript auparavant, qui ne sont peut-être pas familiers avec ce que c'est, comment décririez-vous TypeScript et quel problème est-il en train de résoudre pour nous?

Stefan: C’est une très bonne question. Donc, il existe de nombreuses façons d'aborder TypeScript et une des façons que j'aime le plus, ainsi que la façon dont j'aime décrire dans mon livre, est en tant que couche d'outils au-dessus de JavaScript. JavaScript est un langage merveilleux, mais il a ses bizarreries. Certaines parties peuvent avoir plusieurs significations. Vous avez un typage dynamique, ce qui signifie que vous pouvez avoir différents types comme un nombre ou une chaîne ou un objet en fonction de la position où ils se trouvent dans votre code, et il y a beaucoup de connaissances implicites lorsque vous travaillez, en particulier avec les technologies ou avec Node. js, que vous devez connaître certaines interfaces que vous utilisez à partir d'API, de signatures de fonction, etc.

Stefan: Et TypeScript essaie de vous donner un système de type autour de tout cela, pour vous donner cette information. Ainsi, il essaie de déterminer les types que vous définissez lors de l'affectation de la variable. Il vous indique quelles signatures de fonction attendent, quelle utilisation à quelle position et quels objets de retour que vous obtenez auxquels vous pouvez accéder, modifier et travailler.

Stefan: Et c'était, à l'époque où TypeScript a été créé, il y a environ 80 ans, le principal objectif de l'équipe TypeScript de créer cette couche d'outillage, sous la forme d'un langage supplémentaire. Donc, pour prendre tous les risques de JavaScript, puis en plus, ils créent leur propre type de méta-langage qui vous permet de définir des types pour vos fonctions, vos objets, quoi qu'il en soit. Et cela signifie également que chaque code JavaScript est du code TypeScript, ce qui signifie également que vous pouvez commencer immédiatement. Si vous connaissez JavaScript, vous êtes également un développeur TypeScript. Et vous prenez juste ce dont vous avez besoin pour obtenir de plus en plus d'informations sur votre code.

A dessiné: Donc, TypeScript est presque comme imposer une sorte de règles plus strictes sur la façon dont nous écrivons JavaScript afin de rendre le code plus fiable? Est-ce…

Stefan: Oui, oui, c'est exactement ce que c'est. Donc, la rigueur dépend entièrement de vous. Ainsi, vous pouvez dire à TypeScript à quel point vous voulez qu'il soit strict. Mais leur objectif est de détecter autant d'erreurs, ou autant d'erreurs possibles, qu'il peut y en avoir. Comme bon, cette valeur pourrait être nulle, alors mieux vaut vérifier si cette valeur existe ou si elle peut être indéfinie. Ou, à cette position, je ne sais pas exactement s'il s'agit d'une chaîne ou d'un nombre, alors vérifiez s'il s'agit du type de chaîne, vérifiez s'il s'agit du type de nombre.

Stefan: Ainsi, TypeScript en sait plus, ou peut vous donner plus d’informations sur la classe d’échecs que vous traitez. Et pour le moment, les principaux objectifs de TypeScript sont de détecter autant d'erreurs qu'il y en a. Ils ont donc passé beaucoup de temps à vous fournir plus d'outils pour déclarer vos types et à déclarer les règles strictes pour vous permettre de déterminer s'il y a une erreur dans votre code qui pourrait vous poser problème à long terme.

A dessiné: Donc, je veux dire, vraiment pour revenir aux bases quand nous parlons de types dans un langage de programmation, qui évidemment TypeScript est tout au sujet des types, nous avons strictement des langages de type et des langages de type faiblement et JavaScript est faiblement typé, n'est-ce pas? Que voulons-nous dire quand nous disons que quelque chose est faiblement typé?

Stefan: Il y a faiblement typé, et un autre mot pour cela est également typé dynamiquement, ce qui signifie que vous n'avez pas toujours à savoir de quel type vos variables ou vos constantes ont. Donc, au moment où vous affectez une variable, disons var fu ou laissez fu avec un nombre une fois que vous oubliez quelque chose, les références croisées indiquent que fu est maintenant de type number, c'est un nombre et je ne peux pas faire d'opérations sur les nombres en plus de cela, comme l'addition, la multiplication, les soustractions et toutes ces sortes de choses. Si vous lui attribuez une chaîne, c'est une chaîne.

Stefan: Et, en JavaScript, vous avez la possibilité de le remplacer par la valeur d'une classe entièrement différente, de type entièrement différent. Ainsi, vous pouvez, à un moment donné, dire que c'est 1, 2, 3, 4, à un autre moment, c'est une chaîne comme "Bonjour tout le monde, Stefan" ou "chat tatillon" ou quelque chose comme ça. Et cela peut provoquer quelques erreurs, car que se passe-t-il si vous vous attendez à ce que votre variable fu à un moment donné soit une chaîne et que vous effectuez ensuite une opération de chaîne par-dessus comme deux majuscules, deux minuscules. Ou si vous attendez un nombre et que vous souhaitez modifier quelque chose, vous pouvez obtenir un résultat auquel vous ne vous attendez pas.

Stefan: Et, avec TypeScript, vous pouvez définir explicitement les types ou demander à TypeScript de déduire un type à partir d'une affectation. Donc, au moment où vous en attribuez un à libre, TypeScript sait, Hé, c'est un numéro, et tout au long de votre code, à travers chaque utilisateur, il pensera que c'est un nombre et il vous dira si vous faites quelque chose qui n'est pas autorisé avec les nombres . Donc voilà. Et c'est la différence entre un langage statique ou fortement typé, où vous dites, d'accord, une fois qu'il a le type, il doit être du type et le type ne peut pas changer par la suite. Dans le langage faiblement ou dynamiquement typé où le type dépend juste de l'endroit où vous vous trouvez dans votre code et il peut changer, en particulier lors de l'exécution ou pendant l'exécution du code, ce qui peut causer une tonne de problèmes si vous ne faites pas attention .

A dessiné: Donc, oui, il y a toute cette classe d'erreur, n'est-ce pas, où vous, en tant que développeur, pensez qu'une variable contient un certain type de valeur et en fait quand il s'agit de ce point dans le code et qui est exécuté, pour quoi que ce soit raison pour laquelle c'est quelque chose de différent. Et TypeScript ajoute cette application de types en plus de JavaScript pour nous donner en quelque sorte ce niveau supplémentaire de vérifications et de fiabilité, pour éliminer ce type de bogue.

Stefan: Exactement. Le meilleur exemple est, par exemple, à la chaîne deux, avec le numéro deux, et vous obtenez 22 comme chaîne, au numéro deux vice-versa et vous obtenez le numéro quatre. Donc, c'est apparemment la même opération, mais si vous échangez le nombre dans la chaîne, vous obtenez deux résultats totalement différents. Et TypeScript fait attention qu’il n’y ait pas d’erreurs de ce genre. Et la règle la plus importante à laquelle il définit, donc une fois que vous avez fait un devoir, il doit être de ce type et le type ne peut pas changer.

A dessiné: Donc, TypeScript n'est pas réellement exécuté par le navigateur, n'est-ce pas? Ou par nœud ou quel que soit le temps d'exécution que vous utilisez, il est vraisemblablement compilé en JavaScript?

Stefan: Oui. Donc vous, il existe deux façons de travailler avec TypeScript. Une façon est exactement ce que vous avez dit, vous écrivez le code TypeScript, en particulier avec ce méta-langage de saisie que vous utilisez, puis vous avez une étape de compilation où TypeScript efface tous les types et crache du code JavaScript normal. Et TypeScript est également transpilé afin que vous puissiez, par exemple, si vous écrivez plus que le JavaScript, vous pouvez le compiler en quelque chose avec lequel I-11, si vous devez le supporter, peut travailler. C’est une façon.

Stefan: L'autre façon est, et c'est une manière intéressante que j'aime beaucoup et que les gens utilisent en fait, que vous écrivez du JavaScript normal, puis vous ajoutez des déclarations de type dans un fichier séparé, et vous y faites référence en ajoutant des commentaires JSDoc dans votre code. Et TypeScript peut lire ces informations de commentaire, ces informations de documentation, les mapper aux types que vous avez créés dans un fichier séparé, et peut vous donner les mêmes outils, les mêmes informations que vous obtiendriez si vous écrivez de cette manière transpilée et compilée.

A dessiné: Bon, alors, de cette façon, vous gardez simplement votre JavaScript standard, mais les outils que vous utilisez autour de lui savent référencer le type de fichier de voiture secondaire qui a toutes les définitions de ce que sont les types.

Stefan: Exactement.

A dessiné: La vérification de type est une chose, mais c'est certainement le genre de chose que nous pouvons, nous n'avons pas besoin d'un nouveau langage à faire. Ce genre d'analyse que nous pourrions simplement exécuter dans un éditeur de code dans un VS Code ou autre, par exemple. TypeScript ajoute-t-il des choses qui nous amènent au-delà de ce que vous pourriez faire dans un éditeur de code?

Stefan: Le plus grand avantage que vous obtenez est en fait les éditeurs de code. Une chose amusante est que si vous travaillez avec Virtual Studio Code et que vous écrivez du JavaScript normal, ce que vous faites vraiment est d'écrire TypeScript parce que Virtual Studio Code a intégré TypeScript un vérificateur et un analyseur qui vous donne, qui essaie de comprendre autant informations que possible et donne ces informations à l'éditeur et a une relation étroite avec l'éditeur dans TypeScript. En particulier, d'autant plus que vous avez évoqué VS Code. VS code a été leur premier projet à fonctionner avec TypeScript. À l'époque, il s'appelait Strada ou Project Strada, où tous les développeurs ont compris comment créer un langage comme celui-là.

Stefan: Ainsi, les éditeurs et le langage sont très, très connectés et vous obtenez le meilleur avantage si vous travaillez avec un éditeur moderne. Et grâce à l'équipe TypeScript, cela n'a pas besoin d'être VS Code. Cela peut être n'importe quel éditeur. Donc, les couvertures proactives pour presque tous les éditeurs qui prennent en charge un soi-disant protocole de langage. Il y en a également pour tous les autres langages de programmation, les commentaires et les commentaires de l'éditeur, et l'analyse des informations.

Stefan: Donc voilà. C'est en fait le principal cas d'utilisation pour cela. Et, bien sûr, si vous avez de plus gros projets et que vous aviez l'habitude de compiler une version échelonnée de TypeScript, avec une sorte d'intégration continue, une livraison continue, où vous vérifiez constamment si votre projet a du sens, vous créez des bundles que vous devriez commencer, c'est aussi une partie de TypeScript qui joue un rôle énorme car avec chaque validation dans un référentiel GitHub ou quelque chose, vous pouvez faire des vérifications de type et voir s'il peut y avoir une erreur glissée qui devrait être prise en compte.

A dessiné: Donc, je suppose qu'il y a un niveau que votre éditeur de code peut faire automatiquement. Comme vous l'avez dit, Visual Studio Code le fait simplement en l'analysant comme votre écriture JavaScript, mais lorsque vous les utilisez, lorsque vous déclarez des types spécifiquement ou que vous ajoutez ces commentaires JSDoc, c'est ce qui va encore plus loin. C’est là que vous vous trouvez en fait, il est davantage défini comme un langage en plus de JavaScript.

Stefan: Oui. Ce qui est cool, c'est que TypeScript, dans la manière dont il est conçu, essaie d'extraire autant d'informations que possible de votre JavaScript sans que vous ne fassiez quoi que ce soit. Donc, s'il voit un nombre dans la nature, il sait que ce type va être un nombre. Ou si vous avez une signature de fonction et que vous dites que vous avez une valeur par défaut comme la façon dont vous ajoutez une taxe à un prix et que vous la voyez comme la manière standard d'ajouter une taxe est 0,2. Donc, si vous ajoutez cela dans la signature de fonction, TypeScript sait déjà à ce stade, je m'attends à ce que vous passiez le nombre et pas autre chose.

Stefan: De plus, si vous retournez un objet ou si vous écrivez une classe JavaScript, TypeScript peut déterminer quelle est la bonne utilisation, quels devraient être les types de vos champs. Et cela fonctionne pour de nombreux cas d'utilisation. Vous avez donc de nombreux scénarios où cela est totalement suffisant et vous n’avez besoin de rien d’autre. Mais lorsque vous le faites, c'est maintenant à vous de renforcer TypeScript avec des informations de type supplémentaires que vous fournissez. Alors, disons que vous souhaitez créer un article de type qui doit avoir un numéro, une description, un prix. Vous en avez différents types. Et puis vous créez un type composé ou objet et une fois que vous déclarez ce type et que vous savez que votre objet doit être de ce type, TypeScript sait quelles valeurs et quels champs attendre.

Stefan: Et une chose qui est particulièrement intéressante ici est que TypeScript est l'un des rares et certainement le système de type le plus populaire qui fonctionne avec le typage structurel, ce qui signifie que tant que les propriétés de forme et les types de ces propriétés sont les mêmes que l'objet que vous passer le long ou l'objet que vous obtenez de quelqu'un d'autre, cela dira que tout va bien. Vous n'êtes pas obligé d'avoir le nom exact, il doit simplement avoir la structure exacte. Donc, si vous avez un type appelé livre qui a un nom, une description et un prix et que vous avez un type appelé vidéo qui a un nom, une description et un prix, ces types sont compatibles les uns avec les autres.

A dessiné: D'accord, cela signifie que nous pouvons en quelque sorte définir les types de clients qui ont un sens en termes de projet et les objets que notre projet tente de modéliser, puis utiliser TypeScript pour appliquer la forme de ceux-ci.

Stefan: Oui.

A dessiné: Donc, si nous avons un produit qui a une propriété de prix qui est un entier dans le sens ou ce que vous avez, alors TypeScript l'appliquera pour nous et si nous transmettons quelque chose qui n'est pas un produit ou n'a pas de prix ou autre, c'est là que nous commençons à avoir nos erreurs. Pouvez-vous alors aller plus loin si vous aviez un type de panier contenant une gamme de produits? Pouvez-vous appliquer complètement ce niveau?

Stefan: Oui. Oui exactement. Vous pouvez également appliquer cela. Là, vous entrez également une classe de types qui est déjà entrée dans des sujets très avancés qui sont des types génériques. Ainsi, le type de tableau est un type générique. Cela vous indique qu'un tableau a un certain intérêt afin que vous puissiez les indexer. Il a certaines propriétés comme la longueur ou la carte ou pour chacun, mais l'utilisation du puits à l'intérieur de ce tableau est définie par un soi-disant générique. Vous pouvez donc dire que vous avez un tableau de nombres, vous avez un tableau de chaînes, vous avez un tableau d'articles.

Stefan: Et puis si vous faites array.map, vous obtenez, à l'intérieur de cette fonction de carte, le type à nouveau comme une chaîne, un nombre, un article, tout ce que vous transmettez. Et avec les génériques, vous pouvez faire beaucoup de choses. C'est donc là que le système de types essaie vraiment de donner un sens à tous les cas possibles que les gens rencontrent dans les frameworks JavaScript. Donc vous avez, en particulier en JavaScript, vous avez tellement de fonctions qui peuvent signifier tant. Comme, d'accord, le premier argument est maintenant une chaîne, le deuxième argument doit être un objet, ou si le premier argument est un nombre, le deuxième argument doit être une chaîne. Vous avez vu cela dans la nature dans d’innombrables bibliothèques que vous utilisez.

Stefan: Et, pour ce type de scénario, TypeScript a également des structures dans des types génériques et des types conditionnels où vous pouvez vérifier si c'est une classe de types, si c'est une autre classe de types, qui essaie vraiment de comprendre la plupart des les scénarios que vous trouvez dans le code JavaScript au jour le jour.

Stefan: Donc, et c'est en fait là que le plaisir commence. La création de types d’objet, la création de types réguliers tels que des nombres, des chaînes, etc. ou la création de types de fonctions, c’est une chose. Mais si vous essayez de modéliser un comportement très complexe uniquement dans le système de types, cela peut devenir très, comment dire, époustouflant. Ouais, je suppose que le mot est ahurissant. Cela peut être très époustouflant, mais aussi très amusant.

Stefan: Et c'est là que j'ai en quelque sorte obtenu mon, trouvé mon appel à travailler davantage avec TypeScript parce que je viens de découvrir que je pouvais en faire autant que je vois, non seulement dans mon code, mais dans le code de mes collègues et le code que je trouver en ligne, pour en tirer plus de sens et être prêt pour les scénarios futurs. Donc, j'écris principalement des types en TypeScript parce que je sais qu'à un moment donné, je dois revoir le code et je veux savoir à quoi je pensais quand je l'ai écrit à l'origine.

A dessiné: Où est dans votre projet que vous définiriez ces types? Parce que vous voulez probablement qu'ils soient réutilisables tout autour de votre projet. Où les définissez-vous?

Stefan: Donc, je les définis généralement très près du code que j'écris réellement. Ainsi, lorsque j'écris TypeScript, j'écris d'abord en TypeScript. Donc je transpile, j'ai généralement un bordereau de compilation de toute façon, peut-être parce que je fais React et que j'ai besoin de transpiler JSX, ou parce que le projet est si grand que je veux faire des vérifications supplémentaires. Il y a donc de toute façon une chaîne construite. Soit je dois regrouper, soit je dois transpiler, donc j'écris du TypeScript normal, pas du JavaScript avec ces extensions JSDoc. Et là, j'essaye de garder les types très proches des objets que je déclare.

Stefan: Si un type est utilisé tout au long du projet, je n’attends pas seulement le type, mais également les objets ou les fonctions de ces objets. C'est donc une façon de diviser et de déplacer des fichiers et des types. Il y a un cas très rare où j'ai également l'un de ces fichiers de finition de type global à côté de moi, c'est-à-dire si mon application doit gérer quelque chose qui se trouve dans l'environnement où je l'exécute, que ce soit un nœud ou un navigateur ou autre, où certains les idées globales ou les concepts globaux sont que je veux porter dans mon programme et tenir. Et c'est en fait une configuration assez standard.

Stefan: Donc, vous avez vos fichiers TypeScript d'un côté, vous avez quelques fichiers de définition de type de l'autre côté, puis TypeScript essaie de tout comprendre, si cela a du sens et s'il est possible de le faire et j'espère que c'est le cas.

A dessiné: Oui, je pense que nous sommes tous très habitués à avoir une étape de construction, une étape de combinaison, dans nos flux de travail de nos jours, n'est-ce pas? Qu'il s'agisse d'exécuter Babble ou de gérer JSX et React ou Web Pack et que voulez-vous …

Stefan: Absolument.

A dessiné: Je suppose que l'ajout de TypeScript est juste une autre petite étape dans le processus et assez facile à faire.

Stefan: Ouais. Donc, d'un côté, TypeScript est une excellente extension, surtout si vous avez une configuration Babble en cours d'exécution. Ils fournissent donc une interface où vous pouvez faire des vérifications de type TypeScript, même si toute votre application est transpilée avec Babble. TypeScript dispose également de nombreux outils, il peut donc être le seul transpilateur dont vous avez besoin. Ainsi, il peut transpiler JSX, il peut transpiler vers Equiscript 5, Equiscript 3. La seule chose qu'il ne fait plus est le regroupement. Donc, si vous voulez avoir une application groupée, vous devez prendre un autre outil comme Roll Up ou Web Pack ou autre.

A dessiné: L'une des fonctionnalités que j'aimais dans les nouvelles versions de PHP, à l'époque où j'écrivais beaucoup de PHP, elles permettaient de déclarer les types de chaque argument qu'une fonction attendait. TypeScript fait la même chose, non? Vous pouvez dire que le premier argument doit être un nombre, le deuxième argument doit être une chaîne-

Stefan: Oui.

A dessiné: … Et puis les ensembles d'outils vont attraper cela si vous essayez de transmettre la mauvaise chose.

Stefan: Exactement.

A dessiné: Dans beaucoup de cas du monde réel, je trouve que j'ai des arguments de fonction ou des variables qui seraient d'un type donné, mais il pourrait aussi y avoir des valeurs nulles. Est-ce quelque chose que TypeScript permet?

Stefan: Oui oui. Donc, c'est là que vous entrez dans le monde merveilleux des types d'Union et c'est le grand chapitre de mon livre au milieu où nous passons des concepts débutants aux concepts avancés. Là où nous réalisons que vous n'en avez pas, non seulement vous avez différents types de classes comme des nombres, des chaînes ou plusieurs types d'objets, mais vous pouvez les combiner. Vous pouvez donc dire que cet argument peut être de type string, de type number, ou de type null ou de type undefined, ou pour un type d'objet. Et avec cela, vos arguments, en particulier les arguments de fonction, deviennent beaucoup, beaucoup plus variés.

Stefan: Donc, si vous pouvez dire pour une chose, si cet argument de fonction n'a pas de valeur null dans son type d'unité, vous n'êtes pas autorisé à transmettre null. Et vous pouvez vous assurer qu'à l'intérieur de cette fonction, de cette façon, vous n'êtes jamais nul. S'il peut arriver qu'il soit nul, vous lui ajoutez un opérateur pipe to pipe, et vous devez soudainement vérifier s'il est nul ou s'il ne l'est pas. Ce qui le rend très, très intéressant. Donc, en particulier le cas des vérifications nulles et ayant des valeurs non définies. C'est quelque chose que vous aviez tout le temps dans TypeScript ou dans JavaScript tout le temps.

Stefan: Et avec ce petit ajout, comme assurez-vous de vérifier vos valeurs nulles et si vous n'autorisez pas les valeurs nulles, elles ne peuvent pas être nulles. Cela efface toute une clause d'erreurs que vous rencontreriez autrement. Et c'est aussi une leçon de mon livre où je viens de parler de cette compilation des prochaines vérifications nulles et de ce que cela signifie pour votre travail et de ce que vous devez faire soudainement. Et à un moment donné, vous vous rendez compte, d'accord, c'est beaucoup plus fastidieux d'ajouter un tube nul à tous les cas possibles où il pourrait être nul, au lieu de juste pour une fois à un endroit de votre code, vérifiez s'il est réellement nul et continuez simplement avec quoi Tu l'as fait. C'est donc une très bonne façon de travailler avec des valeurs nulles et non définies.

A dessiné: De nombreuses sortes de langages plus formels, des langages de type OO, ont des classes et vous donnent la possibilité de définir une interface de classe pour pouvoir dire si c'est une classe qui utilise cette interface, elle a besoin de ces méthodes, elle doit se comporter comme cette. Est-ce quelque chose que TypeScript nous donne?

Stefan: Ouais, absolument. C'est donc très lié à l'histoire de TypeScript. TypeScript, quand il est sorti pour la première fois, vous savez qu'il y a huit ans, nous ne parlions pas d'Equiscript 6, nous ne parlions pas de classes Equiscript natives, nous parlions principalement d'objets et de fonctions. Il n'y avait pas de système moderne, donc c'était un type de JavaScript très différent il y a huit ans de ce que nous avons aujourd'hui. Et il y a huit ans, l'équipe TypeScript a introduit de nombreuses fonctionnalités d'autres langages de programme comme Java, C #, comme des classes, des interfaces, des classes supplémentaires, des espaces de noms, pour créer une sorte d'outils de programmation structurels ou structurés qui vous permettent de poser votre code est totalement différent de celui auquel vous êtes habitué.

Stefan: Mais au fil des ans, beaucoup de ces concepts se sont retrouvés dans JavaScript, en particulier les classes. Ils ont donc dû revoir beaucoup de ces concepts et les rendre beaucoup plus alignés sur la façon dont JavaScript est actuellement. Vous avez donc toujours des classes, vous avez toujours des interfaces, mais les classes TypeScript ne sont que les mêmes classes JavaScript. Et les interfaces TypeScript sont comme des types composés ou des types composites où vous n'avez qu'une liste de propriétés. Il peut s'agir de propriétés de fonction ou de chaînes ou d'objets de masse, et les interfaces et les déclarations de type sont, dans la plupart des cas, identiques.

Stefan: Vous pouvez également implémenter, vous savez que les implémentations le maintiennent, vous pouvez implémenter une interface, vous pouvez implémenter un type. Il existe, juste dans de rares cas, efficaces dans certains cas rares, il y en a tout à fait les mêmes. Donc, oui, ils existent, mais ils signifient quelque chose de différent de celui auquel vous êtes habitué par rapport aux autres langages de programmation. Et c'est aussi quelque chose où je dirais que les gens qui viennent d'autres langages de programmation doivent faire attention à des choses comme ça parce qu'ils peuvent être de faux amis. Là où vous, ils pensent, d'accord, oh, cela fonctionne juste comme en Java ou cela fonctionne comme NC Sharp, où à son tour c'est juste un langage emprunté ou c'est juste les mêmes noms pour des concepts qui sont nuancés et quelque peu différents de ce que vous voudriez attendre.

A dessiné: Cela peut être une vraie sorte d'obstacle mental à franchir, n'est-ce pas?

Stefan: Absolument.

A dessiné: Si vous connaissez un nom qui signifie une sorte de chose et que maintenant cela signifie autre chose.

Stefan: Oui.

A dessiné: Il peut être assez difficile de réinitialiser votre façon de penser à ces choses. Donc, il semble que TypeScript dispose d'une sorte de fonctionnalités vraiment avancées qui nous aident à travailler très dur en JavaScript toute la journée. Est-ce juste pour nous les super nerds ou les personnes moins familières avec JavaScript, est-ce utile pour les plus, les débutants ou les intermédiaires aussi?

Stefan: Ouais, je dirais les deux. L’un des avantages de TypeScript est donc qu’il est honorable. Vous utilisez donc autant de TypeScript que vous le souhaitez. Donc, si vous apprenez JavaScript, vous obtenez des outils supplémentaires qui vous indiquent gentiment, Hé, il se peut que vous souhaitiez sélectionner certaines propriétés. Comme si vous appelez le document .queries elect, cela vous le dit déjà, aucune requête elect n'existe et cela vous donne un indice sur ce à quoi vous attendre en tant qu'argument sans lancer une seule erreur et sans que vous ayez besoin de faire quoi que ce soit avec ces lignes rouges que vous obtenez dans votre éditeur.

Stefan: Et pour cela, TypeScript peut déjà faire beaucoup de choses. Cet aspect de l'outil de base peut donc aider les débutants tout autant que les personnes plus familiarisées avec JavaScript et qui utilisent JavaScript depuis très, très longtemps. Mais au fur et à mesure que vous progressez, vous pouvez acheter de plus en plus de concepts, à condition que vous puissiez le faire. Je suis donc toujours un fervent partisan de ne pas avoir à utiliser toutes les fonctionnalités d'un langage de programmation, mais juste les fonctionnalités dont vous avez réellement besoin et TypeScript est parfait pour cela car il contient une tonne de fonctionnalités de l'histoire dont nous avons parlé. il a essayé d'introduire des concepts qui n'étaient pas en JavaScript. Et maintenant, à partir de tous ces concepts qui essaient de donner le plus de sens à tout le code JavaScript qui existe à l'extérieur, vous pouvez prendre tout ce dont vous avez besoin et tout ce que vous voulez.

Stefan: Et c'est, je suppose, ce qui rend TypeScript si spécial. Quand j'ai commencé à travailler avec TypeScript, comme travailler sérieusement avec TypeScript, les choses que c'était le plus comme avoir un composant de réaction et être super heureux que si j'appuie sur l'espace de contrôle, j'obtienne tout le nom des propriétés que mon composant de fonction attend. Donc, cela seul m'a beaucoup aidé et cela n'a rien fait d'autre que d'utiliser cette fonctionnalité pendant très, très, très longtemps. Et puis j'ai commencé, dans une sorte de code de bibliothèque que j'ai créé pour mes collègues ou pour les personnes avec qui je travaille, créer un noyau de types autour de ma fonction afin que les personnes qui utilisent mon code sachent mieux ce que je voulais dire quand j'ai écrit ces fonctions particulières . Et là, je vais tout dedans. Je suis très profond, au fond du terrier de type système de type lapin.

A dessiné: Ouais, je veux dire que c’est intéressant. Dans le dernier épisode de ce podcast, j'ai parlé à Natalia de Vue JS de Vue 3 et l'un des grands changements qu'ils avaient apportés à Vue 3 était qu'il a été réécrit à l'aide de TypeScript. Dans quelle mesure est-il important pour les bibliothèques et les frameworks d'adopter TypeScript? Quel avantage cela apporte-t-il réellement à ceux qui travaillent avec la bibliothèque et non sur le code de la bibliothèque lui-même?

Stefan: Donc, je pense que pour une partie, vous obtenez beaucoup de documentation implicite. Surtout si vous importez Vue ou React, React est une sorte de sac mélangé, mais si vous importez Vue ou Preact d'ailleurs, Preact est également écrit en TypeScript. Les personnes qui utilisent votre framework ont ​​immédiatement des informations sur toutes les fonctions et tous les objets qu'elles obtiennent sans que vous ayez besoin de chercher quoi que ce soit et vous obtenez des vérifications supplémentaires si ce que vous faites est la bonne chose à faire.

Stefan: C'est donc beaucoup de documentation implicite pour tous les utilisateurs de ces bibliothèques que vous obtenez, essentiellement gratuitement, si vous commencez à écrire en TypeScript de toute façon. Ainsi, chaque projet écrit en TypeScript obtient, produit toutes ces informations supplémentaires gratuitement. Je suppose qu'en tant qu'équipe, en tant qu'auteur de bibliothèque, cela rend les contributions beaucoup, beaucoup plus faciles pour les mêmes raisons de documentation. Cela rend également les vérifications beaucoup plus faciles, car il y a toute une classe d'erreurs que vous pouvez détecter dans le système de type que vous, et qui prendraient des années à détecter dans les tests. C’est pourquoi personne n’écrit de test pour cela, surtout s’il s’agit d’un certain type de tests.

Stefan: Et oui, et bien sûr, vous obtenez tous les avantages que vous obtiendriez si vous utilisiez TypeScript dans tout autre projet pour détecter les erreurs avant qu'elles ne se produisent. Et une chose que je dois mentionner ici est, en particulier Preact parce que Preact essaie de faire le genre de chose qui écrit du code JavaScript et ajoute des types supplémentaires sur le côté, ce qui leur donne une faible barrière d'entrée pour les personnes qui souhaitent contribuer parce que ils n'ont pas à comprendre comment fonctionne le système de type ou comment fonctionne le script de type car ils sont comme du code JavaScript. Mais ils, en tant qu'auteurs de bibliothèques, obtiennent les avantages supplémentaires d'avoir des vérifications de type, de voir si cela fonctionne comme prévu, et je pense que c'est pour beaucoup de projets. En particulier, les projets Open Source sont vraiment la meilleure voie à suivre.Je préconise donc vivement l'idée d'avoir des types JavaScript sur les côtés, car cela peut aider les gens, tellement pour fondamentalement pas beaucoup d'investissement de votre part.

A dessiné: De plus en plus, nous voyons une sorte d’organisations entières passer à JavaScript comme langue de choix, à la fois dans le front-end où c’est un choix évident, mais dans le back-end de leurs produits et systèmes. Considérez-vous TypeScript comme quelque chose dont les équipes plus grandes et les grandes organisations bénéficieraient vraiment? Plus que des individus?

Stefan: Donc, je suis actuellement dans la même transition. Nous avons donc beaucoup de développeurs Java NC Plus qui vont écrire beaucoup de JavaScript à l'avenir et vous savez quoi, TypeScript peut être une sorte de guide pour ceux qui portent des zones de nouveaux langages de programme. JavaScript a beaucoup de bizarreries, beaucoup d'histoire et beaucoup de préjugés si vous venez d'un langage de programmation différent. Ainsi, TypeScript peut être un guide, car il existe certains concepts que vous connaissez dans le système de types.

Stefan: Mais aussi, je pense, surtout lorsque vous avez beaucoup de gens qui travaillent dans la même base de trou ou beaucoup de gens qui ont besoin de travailler les uns avec les autres, cela peut être une couche supplémentaire de conseils dans votre projet où vous n'avez aucun mal surprises à la fin. Donc, bien sûr, la technologie ne résout aucun problème de communication. Ce n'est pas à cela que TypeScript est destiné, mais cela peut baisser, cela peut faire beaucoup plus de place pour la bonne discussion, si vous n'avez pas à parler de ce que vous attendez de moi dans votre code, mais plutôt de ce que vous devriez code faire ou que devrait faire votre bibliothèque.

Stefan: Et, je dis toujours que si jamais vous écrivez du code pour d'autres personnes ou si vous écrivez du code avec beaucoup de gens ou si vous écrivez simplement du code pour vous-même, vous devez revisiter le lendemain, pensez à TypeScript car cela pourrait vous aider à long terme courir. Et ce n'est pas seulement un investissement pour le prochain projet de la semaine prochaine, mais plus pour celui qui dit, d'accord, surtout s'il s'agit de projets de longue durée pendant un mois, deux ou des années. Offrez certainement cela. Vous ne saurez jamais à quoi vous pensiez lorsque vous avez écrit le petit bout de code il y a un an, mais les types peuvent vous donner une idée de ce que vous vouliez dire.

A dessiné: Une chose que je pense qui m'a empêché de regarder de trop près TypeScript dans le passé est que je me souviens en quelque sorte de choses comme Coffee Script qui étaient une sorte de nouveaux Syntacs qui ont en quelque sorte transpiré et j'ai en quelque sorte pensé que TypeScript était un autre de ceux-là, mais ce n'est vraiment pas le cas, n'est-ce pas? C'est du JavaScript simple avec quelques éléments supplémentaires superposés.

Stefan: Ouais, c'est donc quelque chose que l'équipe fait aussi beaucoup. Ce n’est fondamentalement pas une nouvelle langue. Donc, cela pourrait ressembler à ça si vous regardez des exemples d'il y a 80 ans, cela faisait également partie, tout comme vous aussi. J'évitais pendant si longtemps, d'une part à cause de Coffee Script, d'autre part à cause de tonnes de développeurs JavaScript me disant que c'est Java 4 ou c'est JavaScript pour les développeurs enfants, comme et maintenant enfin obtenir tous ces outils que je connais depuis des années et des années d'écriture en Java et je ne veux pas changer ma façon d'écrire, je veux juste avoir les mêmes outils mais dessiner dans un environnement différent et cela m'a fait peur et je ne voulais rien avoir à faire avec. Et il m'a fallu, je suppose, environ six ans avant d'essayer à nouveau.

Stefan: Surtout après avoir regardé quelques vidéos du créateur de TypeScript Anders Hejlsberg qui a parlé exclusivement des aspects d'outillage et de JavaScript. Alors, je l'ai rencontré deux fois à Seattle et quand il a participé à des séances d'entrevues où nous étions tous, il a dit de lui-même qu'il écrivait du JavaScript pendant la majeure partie de la dernière décennie. Et si le créateur de TypeScript a cette idée qu'il écrit du JavaScript, vous le savez peut-être avec ces annotations de type supplémentaires, cela prend tout le langage et l'outil dans son ensemble sous un jour totalement différent.

Stefan: Et c'est pourquoi ils étendent tellement le fait que tout ce que vous avez, surtout s'il s'agit d'une nouvelle fonctionnalité de langage, c'est du JavaScript. Ils sont donc très étroitement alignés sur la norme ECMAScript. Ils défendent également quelques propositions dans la norme ECMAScript. Ils sont impliqués, ils savent ce qui se passe, et s'il y a une nouvelle fonctionnalité qui atteint un certain stade, ils l'adoptent dans TypeScript, mais ils ne créent pas eux-mêmes de nouvelles fonctionnalités de langage.

Stefan: Là où ils innovent, c'est dans le système de types. Et vous pouvez vraiment séparer le système de type du code JavaScript réel. Bien sûr, il y a un mélange de code JavaScript et de groupe de types, en particulier lorsque vous tapez des annotations, mais à part cela, c'est JavaScript avec des avantages. Et ces avantages sont ce qui en vaut la peine à mon avis.

A dessiné: Et je suppose que nous pourrions passer par toutes sortes de ces avantages, toutes sortes de fonctionnalités qui sont dans TypeScript, nous pourrions les passer en revue coup par coup, mais cela n'a pas forcément de sens de le faire dans un podcast. C’est difficile de décrire le code, non?

Stefan: Oh, vous écrivez un livre entier à ce sujet.

A dessiné: Y a-t-il des fonctionnalités particulières de TypeScript qui vous intéressent le plus ou qui vous semblent les plus utiles?

Stefan: Je suppose que l'une des fonctionnalités du système de type que j'aime le plus, qui est encore une fois avancée mais pas très avancée pour être facilement saisissable, sont les types d'union et de section. Là où vous pouvez dire, d'accord, cet argument ou cette variable peut être non seulement de ce type, mais aussi d'un autre type. Ou il doit avoir des fonctionnalités de ce type et de cet autre type. Et si vous, une fois que vous réalisez que vous pouvez utiliser cela, vous pouvez soudainement modéliser votre application beaucoup, beaucoup mieux.

Stefan: J'ai donc adopté un travail pour lequel j'ai essayé de penser à l'objet et aux fonctions que j'ai, comme à quoi s'attendent-ils, quelles sont les données, comment sont conçues les propriétés. Et puis j'ai essayé de travailler avec eux autant dans les fonctions et si vous utilisez un type d'intersection que vous pouvez, vous avez tellement d'outils de modélisation de vos données que si vous passez un peu de temps à faire cela, vous attrapez une tonne d'erreurs et une tonne de problèmes à l'avant sans passer trop de temps dedans, dans le pays TypeScript.

Stefan: Et c’est pourquoi je suppose que ce serait ma fonctionnalité préférée. Et aussi le fait que TypeScript transpire tout. Je n’ai pas besoin de Babble ou de tout autre transpile et j’en ai assez d’avoir trop d’outils à utiliser. Donc, si je peux simplement compter sur un outil et peut-être un autre pour le regroupement, cela me fait perdre beaucoup de bruit. C’est donc ce pour quoi je suis également très reconnaissant. Cela peut faire beaucoup.

A dessiné: Vous avez décrit ce qu'il peut faire dans un nouveau livre pour Smashing. Des tonnes d'informations intéressantes pour les personnes qui souhaitent apprendre TypeScript. Alors, à quel genre de développeur le livre est-il destiné?

Stefan: Oui, donc si vous lisez TypeScript dans 50 leçons, nous supposons que vous êtes déjà un développeur JavaScript. Vous n'avez pas besoin d'être un développeur JavaScript chevronné, alors juste assez pour que vous, vous ayez écrit une application avec, vous connaissez certaines bizarreries, vous savez ce qu'est un objet, vous savez ce qu'est une erreur, vous savez ce qu'est une fonction c'est que vous savez ce qu'est une mission. Alors des trucs comme ça.

Stefan: Et nous vous emmenons à partir de là, à partir de juste assez de JavaScript pour que vous sachiez être dangereux, et vous guidons à travers la couche TypeScript. Ainsi, vous pouvez écrire des livres sur TypeScript dans lesquels vous parlez simplement de toutes les fonctionnalités existantes et expliquez un peu et laissez le lecteur comprendre tout ce qui a à voir avec cela, et nous adoptons une approche totalement différente. Nous nous concentrons sur une partie en particulier, qui est le système de type, nous omettons beaucoup d'autres choses qui, elles ne le sont, ni l'équipe ni les développeurs TypeScript chevronnés ne vous recommanderaient de le faire, et nous nous concentrons uniquement sur la partie qui dure longtemps.

Stefan: Donc, c’était une chose qui me tenait vraiment à cœur en écrivant ce livre: une fois qu’il sera sorti, il devrait avoir une certaine pertinence dans les années à venir. Surtout avec TypeScript qui reçoit quatre versions par an, vous ne connaissez jamais toutes les fonctionnalités et vous ne pouvez pas exprimer toutes les fonctionnalités. Mais vous pouvez exprimer, ou expliquer, comment fonctionne le système de types. Et à partir de là, vous découvrez les choses par vous-même. Et c'est ce que nous faisons, donc nous donnons une introduction très approfondie dans le système de type.

Stefan: Tout d'abord, dans les quatre premiers chapitres, nous vous guidons au point où Ok, oui, vous savez comment attribuer des types, maintenant vous savez comment travailler avec des types. Ensuite, il y a ce chapitre sur les bassins d'eau où nous abordons les types d'intersection d'unités et à partir de là, vous en apprendrez sur la modélisation de type et sur le passage au système de types. Et après avoir lu les derniers chapitres, nous avons eu sept chapitres au total, vous devriez tout savoir, pour être préparé à chaque TypeScript existant. Et pour chaque nouvelle classe de types qu'ils introduisent et pour chaque nouvelle classe d'erreurs qu'ils essaient de résoudre.

Stefan: Et il m'a fallu un certain temps pour écrire ce livre pour être honnête, donc je savais qu'il n'avait pas besoin de changer la table des matières et qu'il n'avait pas besoin d'introduire de nouveaux concepts au cours du dernier 1 12 ans pour moi, c'est une preuve suffisante que nous y sommes parvenus. Alors, peut-être que nous nous sommes faufilés dans une ou deux fonctionnalités de TypeScript 4.0 mais pas toutes. Donc tous les apprentissages que vous avez le sont toujours bien même si nous, je les ai conçus 1 12 il y a des années. Alors, oui, c'est l'objectif principal du livre. Et c'est un peu ce que nous voyons dans le slogan. Nous voulons vous faire passer d'un débutant à un expert. Et j'espère que nous y parviendrons. Ouais.

A dessiné: J'ai certainement trouvé la lecture du livre, car il est décomposé, vous savez que ce sont 50 leçons, donc tout est en quelque sorte de gros morceaux, et j'ai constaté que j'ai pu commencer à utiliser tout cela immédiatement. Vous aviez lu quelque chose et vous pourriez alors commencer à l'utiliser. Ce n’est pas un de ces livres où vous devez aller jusqu’à la fin avant de pouvoir commencer à être productif.

Stefan: Ouais. Oui. Absolument.

A dessiné: Il est très facile de simplement tomber et de quitter ce qui, avec beaucoup d'entre nous étant si occupés et sous tellement de pression dans nos emplois et les choses en ce moment, c'est génial de pouvoir lire un peu et de l'oublier pendant un moment, puis revenez et lisez un peu plus.

Stefan: Oui. C'est aussi quelque chose que nous prenons beaucoup de soin, que nous tenions vraiment à accomplir. Il peut être très difficile d'apprendre une nouvelle langue. Surtout un nouveau langage de programmation. Et donc ces petits morceaux, vous savez que vous ne passez que cinq ou peut-être dix minutes à l'une de ces leçons. Et vous pouvez immédiatement appliquer les enseignements de ces leçons à un code réel et nous vous fournissons tous les exemples de code en ligne. Donc, si vous allez sur TypeScript-Book.com, vous voyez une liste de tous les exemples de code qui existent.

Stefan: Et cela vous aide à entrer autant que vous en avez besoin et autant que vous le souhaitez et cela vous donne également beaucoup d'espace pour respirer et faire une pause, vous en débarrasser et y revenir plus tard. C'est aussi par l'édition de quelques intermèdes entre les chapitres qui sont pour la plupart non techniques. Ils vous donnent un peu de culture TypeScript, un peu d'idées sur la façon dont l'équipe TypeScript pense, comment la communauté pense et comment écrire du bon code TypeScript parce que vous ne vous concentrez pas réellement sur l'aspect du codage. Et nous avons également ajouté ceux-ci pour vous donner une petite pause, un peu d'espace pour respirer, pour digérer ce que vous venez d'apprendre car nous savons que cela peut être beaucoup de choses. Et, oui, donc si vous ne prenez qu'une leçon par jour, vous en avez terminé en 50 jours et êtes un expert en TypeScript, donc.

A dessiné: Je trouve souvent que lorsque j'écris sur quelque chose, j'ai préparé une présentation ou un article ou quelque chose comme ça, je trouve que j'apprends de nouvelles choses que je n'appréciais pas avant parce que devoir expliquer quelque chose, il faut assurez-vous de bien comprendre tous les détails. Avez-vous trouvé quelque chose sur TypeScript en écrivant le livre que vous avez réalisé que vous appreniez pour la première fois?

Stefan: Oui. Il y a eu deux sortes de choses que j'ai apprises en écrivant le livre qui m'ont vraiment surpris. Et une chose est la façon dont les définitions de type que TypeScript apporte sont structurées, créées et déclarées. Ils ont donc écrit un colis qui passe en revue toutes les normes Web au-dessus de votre 3C et il y a ce langage de définition d'interface Web qui est son propre langage créé par le W3C pour déclarer les interfaces JavaScript et pour prendre ce code, il les a réfractés en types TypeScript . Et puis ayez un moyen de les structurer pour qu'ils soient prêts à partir des normes ECMAScript 5 jusqu'aux normes ECMAScript 2020, 2021 et si vous parcourez ces fichiers générés et lisez à quel point ils sont bons et bien documentés et comment les types de structure que vous peut apprendre beaucoup.

Stefan: C'était donc une chose là-bas. J'ai en quelque sorte perdu la trace à un moment donné en l'écrivant parce que je passais juste deux ou trois jours à l'intérieur, dans ces fichiers lib.d.ts et à absorber tout ce qu'ils avaient créé. J'ai même une leçon consacrée à lib.d.ts parce que c'était tellement surprenant. Et l'autre chose est, je suppose, de réaliser comment les génériques et les types conditionnels fonctionnent vraiment sous le capot.

Stefan: Parce que lorsque vous les appliquez et que vous travaillez avec eux, vous les utilisez autant pour obtenir les bons résultats, mais vous ne remettez jamais en question ce qui les fait réellement fonctionner et en les expliquant dans les chapitres cinq et six de mon livre, j'ai vraiment découvert qu'il y en a des mécanismes très délicats en dessous et si vous comprenez ces mécanismes, il devient beaucoup plus facile de créer des types conditionnels, de créer des types génériques, que ce ne le serait sans simplement en essayant de comprendre les choses. C’est pourquoi j’ai également des flux de code dans mon livre où nous commençons par le type conditionnel que vous écrivez, puis nous évaluons étape par étape ce que cela signifie jusqu’à ce que nous arrivions au type de résultat.

Stefan: Et c'est quelque chose où j'y ai trouvé une certaine joie parce que cela m'a vraiment fait comprendre de quoi mon livre devrait être en fait. Que je passe beaucoup de temps et que je me soucie beaucoup de bien comprendre ces exemples, donc. J'espère que les lecteurs y trouveront la même joie car cela peut être très, très intéressant. Et oui, ça devient un peu ringard, mais ça fait partie du plaisir.

A dessiné: Pour tous ceux qui souhaitent se familiariser avec JavaScript, il semble que votre livre soit un excellent point de départ. Y a-t-il d'autres ressources que vous recommanderiez?

Stefan: Donc, une chose que je mentionne également très tôt dans le livre est le TypeScript Playground. Ainsi, TypeScript propose un éditeur interactif en ligne avec beaucoup, beaucoup et beaucoup d'exemples pour vous donner une bonne idée de la façon dont il est de travailler avec TypeScript, à quoi ressemble et fonctionne TypeScript dans le scénario JavaScript uniquement ou quelles sont les fonctionnalités du langage et à quoi elles signifie pour vos types et en particulier au cours de la dernière année, l'équipe TypeScript a embauché une personne, Orta, juste pour travailler sur la documentation, le Playground et le site Web et toutes ces ressources d'apprentissage. Et vous pouvez voir que le processus est immensément.

Stefan: Donc, il a passé tellement de temps à refactoriser chaque élément de l'ensemble du site Web que c'est maintenant une excellente ressource d'apprentissage et Otta aussi, a également écrit l'avant de mon livre et discutait de la façon dont un livre sur TypeScript peut ou devrait être différent. par rapport à ce qu’ils fournissent en tant que ressource d’apprentissage. Et je pense qu'ils fonctionnent très bien ensemble. Le livre vous donne une vue très personnalisée et avisée et la ressource d'apprentissage qui vous guide étape par étape, tandis que le manuel est cette grande base de connaissances où vous obtenez toutes les informations supplémentaires et pouvez approfondir un scénario spécifique qui n'aurait pas assez de place dans un livre.

A dessiné: Le livre de Stefan, TypeScript in 50 Lessons, est disponible sous forme numérique chez Smashing dès maintenant et sera disponible en version imprimée à partir de novembre 2020. Vous pouvez le trouver sur TypeScript-Book.com. Donc, j’ai tout appris sur TypeScript. Qu'avez-vous appris ces derniers temps sur Stefan?

Stefan: Je suis à nouveau en train de creuser dans différents langages de programmation. J'ai appris un peu de Go et un peu de Thrust et quels sont les scénarios pour les utiliser et c'est amusant d'apprendre quelque chose d'entièrement nouveau. Cela vous donne une nouvelle perspective sur ce que vous avez déjà appris jusqu'à présent. Donc, c'est ce que j'apprécie beaucoup en ce moment.

A dessiné: C’est toujours passionnant, non? Apprendre une nouvelle langue et avoir une nouvelle perspective sur la structure des autres langues.

Stefan: Absolument.

A dessiné: Si vous, cher auditeur, souhaitez en savoir plus sur Stefan, vous pouvez le suivre sur Twitter où il est DDPRRT et vous pouvez trouver son site personnel sur fetblog.edu. TypeScript en 50 leçons est maintenant disponible sur Smashing et vous pouvez tout lire à ce sujet sur TypeScript-Book.com. Merci de vous joindre à nous aujourd'hui, Stefan. Avez-vous des mots d'adieu?

Stefan: Merci beaucoup. Non, eh bien, DDPRRT est le pire pseudo Twitter au monde et si vous le dites très vite, c'est un perroquet mort, et si vous connaissez Monty Python, vous connaissez peut-être le perroquet mort. C'est tout ce que je peux dire sur le pire pseudo Twitter qui existe.

A dessiné: Il a soif des fjords.

Stefan: Ouais. Mais, sérieusement, j'espère que les gens apprécieront de travailler avec TypeScript. J'espère qu'ils apprécieront mon livre. Je suis vraiment très enthousiasmé par les commentaires, alors si vous avez des commentaires, contactez-moi sur Twitter. Je suis ici pour discuter avec vous de tout cela. Et je suis également très heureux de travailler avec vous sur des programmes de saisie. Si vous avez quelque chose que vous ne pouvez pas vraiment comprendre, envoyez-moi simplement une ligne ou un message direct Twitter. Je prends vraiment le temps de voir si nous pouvons résoudre le problème.

Éditorial fracassant(il)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *