Maison > interface Web > js tutoriel > Comment utiliser efficacement les espaces de noms avec les modules externes TypeScript ?

Comment utiliser efficacement les espaces de noms avec les modules externes TypeScript ?

Mary-Kate Olsen
Libérer: 2024-11-10 13:39:02
original
412 Les gens l'ont consulté

How Do I Use Namespaces Effectively with TypeScript External Modules?

Comment utiliser les espaces de noms avec des modules externes TypeScript ?

Problème :

Vous avez du code utilisant des espaces de noms avec TypeScript externe modules, mais vous rencontrez des erreurs ou un comportement inattendu. Voici votre code :

// baseTypes.ts
export namespace Living.Things {
  export class Animal {
    move() { /* ... */ }
  }
  export class Plant {
    photosynthesize() { /* ... */ }
  }
}

// dog.ts
import b = require('./baseTypes');

export namespace Living.Things {
  // Error, can't find name 'Animal', ??
  export class Dog extends Animal {
    woof() { }
  }
}

// tree.ts
// Error, can't use the same name twice, ??
import b = require('./baseTypes');
import b = require('./dogs');

namespace Living.Things {
  // Why do I have to write b.Living.Things.Plant instead of b.Plant??
  class Tree extends b.Living.Things.Plant {
  }
}
Copier après la connexion

Analogie de la Candy Cup :

Imaginez organiser des bonbons sur des feuilles de papier. Si chaque feuille est un module distinct, créer une tasse étiquetée « A » sur chaque feuille n'est pas utile : c'est comme créer des étapes supplémentaires sans réellement organiser vos bonbons.

Going Cupless :

Au lieu d'utiliser des espaces de noms, pensez à écrire votre code comme ceci :

// Mod1.ts
export class Twix { ... }

// Mod2.ts
export class PeanutButterCup { ... }

// Mod3.ts
export class KitKat { ... }
Copier après la connexion

Cela crée une structure plus simple sans avoir besoin de espaces de noms inutiles.

Raisons pour lesquelles les espaces de noms ne sont pas idéaux pour les modules :

  • Organisation : L'organisation du système de fichiers répond à ce besoin.
  • Conflits de noms : Ce problème ne se produit pas dans les modules car les objets ont des caractéristiques uniques. noms.

Conseils pour les modules externes :

  • Exportez aussi près que possible du niveau supérieur.
  • Utilisez l'exportation par défaut. pour les exportations uniques.
  • Placez plusieurs exportations au niveau supérieur.
  • Utilisez module/espace de noms uniquement pour les exportations volumineuses.

Drapeaux rouges :

  • Module d'exportation de niveau supérieur Foo { ... }.
  • Classe/fonction d'exportation unique qui n'est pas exportée par défaut.
  • Plusieurs fichiers avec le même module d'exportation Foo { ... }.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal