Table des matières
Concevoir une classe de base réutilisable
Implémentation de AbstrAtio
Apprentissages clés
Conclusion
Maison interface Web tutoriel CSS Création de classes de base réutilisables dans TypeScript avec un exemple réel

Création de classes de base réutilisables dans TypeScript avec un exemple réel

Apr 21, 2025 am 09:31 AM

Création de classes de base réutilisables dans TypeScript avec un exemple réel

Cet article se plonge sur la création de classes de base réutilisables dans TypeScript, en détendant un article précédent sur la conversion TypeScript. Bien que ce message soit seul, la publication liée offre des informations précieuses sur la réécriture de la base de code et les tests unitaires.

Johnny-Five, une bibliothèque IoT et robotique pour Node.js, simplifie l'interaction matérielle à l'aide d'une approche de type jQuery: normaliser les différences entre les plates-formes et fournir des abstractions de niveau supérieur. Il prend en charge diverses plates-formes via des plugins IO, notamment Arduino, Tessel et Raspberry Pi. Raspi IO, un plugin prenant en charge Raspberry Pi, a été réécrit dans TypeScript, conduisant à la création d'une classe de base réutilisable.

Concevoir une classe de base réutilisable

Pour ceux qui ne connaissent pas l'héritage basé sur la classe, une classe de base fournit une structure et une fonctionnalité communes que les sous-classes peuvent étendre. Considérez cet exemple de dactyloage simplifié:

 Automobile de classe abstraite {
  Private _Speed: numéro = 0;
  _direction privée: numéro = 0;
  Public Drive (vitesse: numéro): void {
    this._speed = Speed;
  }

  Turn public (direction: numéro): void {
    if (Direction> 90 || Direction <p> Cette classe de base <code>Automobile</code> est étendue pour créer une classe <code>Sedan</code> . Toutes les méthodes des deux classes sont accessibles. De même, une classe de base <code>AbstractIO</code> a été créée pour les plugins IO de Johnny-Five.</p><h3 id="Implémentation-de-AbstrAtio"> Implémentation de AbstrAtio</h3><p> <code>AbstractIO</code> est un package NPM fournissant une classe de base conforme aux meilleures pratiques de type dactylographiques et javascript. Examinons la méthode de la propriété et <code>digitalWrite</code> <code>MODES</code> :</p><p> La propriété <code>MODES</code> est un nom de mode de mappage d'objets (entrée, sortie, etc.) dans des constantes numériques. Dans TypeScript, une enum est idéale, mais JavaScript n'a pas cette fonctionnalité. La solution? Une énumération de typeScript est utilisée en interne, mappée sur un objet JavaScript à l'extérieur:</p><pre class="brush:php;toolbar:false"> Mode Enum Exporter {
  Entrée = 0,
  Sortie = 1,
  Analog = 2,
  Pwm = 3,
  Servo = 4,
  Stepper = 5,
  Inconnu = 99
}

public get modes () {
  retour {
    Entrée: mode.input,
    Sortie: mode.output,
    Analogique: mode.analog,
    Pwm: mode.pwm,
    Servo: mode.servo,
    Inconnu: mode.unknown
  };
}
Copier après la connexion

Pour les méthodes nécessitant des remplacements de sous-classe (comme digitalWrite ), une approche JavaScript a été adoptée: lancer une erreur dans la classe de base:

 public numériquewrite (broche: chaîne | numéro, valeur: numéro): void {
  Jetez une nouvelle erreur (`DigitalWrite n'est pas prise en charge par $ {this.name}`);
}
Copier après la connexion

Cela fonctionne à la fois dans TypeScript et JavaScript, bien que TypeScript manque d'avertissements pour les méthodes non-revêtements.

Apprentissages clés

Le processus de conception pour TypeScript et JavaScript a mis en évidence ces points clés:

  1. Prioriser les meilleures pratiques courantes.
  2. Si des conflits surviennent, utilisez les meilleures pratiques TypeScript en interne et mappez-les à JavaScript à l'extérieur.
  3. Si aucun ne fonctionne, les meilleures pratiques JavaScript par défaut.

Les classes abstraites se sont révélées moins utiles en JavaScript et le typage de canard dans les modules a présenté des défis de maintenance. Les commentaires itératifs des consommateurs de bibliothèques ont été cruciaux pour une conception réussie.

Conclusion

La création de classes de base pour les utilisateurs de typeScript et JavaScript est réalisable, bien que certains compromis soient nécessaires. AbstractIO sert avec succès les deux communautés, démontrant qu'un équilibre peut être trouvé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vue 3 Vue 3 Apr 02, 2025 pm 06:32 PM

Il est sorti! Félicitations à l'équipe Vue pour l'avoir fait, je sais que ce fut un effort massif et une longue période à venir. Tous les nouveaux documents aussi.

Construire une application Ethereum à l'aide de Redwood.js et de la faune Construire une application Ethereum à l'aide de Redwood.js et de la faune Mar 28, 2025 am 09:18 AM

Avec la récente montée du prix du bitcoin sur 20k $ USD, et pour lui, récemment en train de briser 30k, je pensais que cela valait la peine de reprendre une profonde plongeon dans la création d'Ethereum

Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Pouvez-vous obtenir des valeurs de propriété CSS valides du navigateur? Apr 02, 2025 pm 06:17 PM

J'ai eu quelqu'un qui écrivait avec cette question très légitime. Lea vient de bloguer sur la façon dont vous pouvez obtenir les propriétés CSS valides elles-mêmes du navigateur. C'est comme ça.

Cartes empilées avec un positionnement collant et une pincée de sass Cartes empilées avec un positionnement collant et une pincée de sass Apr 03, 2025 am 10:30 AM

L'autre jour, j'ai repéré ce morceau particulièrement charmant sur le site Web de Corey Ginnivan où une collection de cartes se cassent les uns sur les autres pendant que vous faites défiler.

Un peu sur CI / CD Un peu sur CI / CD Apr 02, 2025 pm 06:21 PM

Je dirais que "Site Web" correspond mieux que "Application mobile" mais j'aime ce cadrage de Max Lynch:

Comparaison des navigateurs pour une conception réactive Comparaison des navigateurs pour une conception réactive Apr 02, 2025 pm 06:25 PM

Il existe un certain nombre de ces applications de bureau où l'objectif montre votre site à différentes dimensions en même temps. Vous pouvez donc, par exemple, écrire

Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress Apr 02, 2025 am 04:27 AM

Si nous devons afficher la documentation à l'utilisateur directement dans l'éditeur WordPress, quelle est la meilleure façon de le faire?

Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Apr 05, 2025 pm 05:51 PM

Questions sur les zones de slash violet dans les dispositions flexibles Lorsque vous utilisez des dispositions flexibles, vous pouvez rencontrer des phénomènes déroutants, comme dans les outils du développeur (D ...

See all articles