Quelqu'un pourrait-il expliquer exactement comment les exportations et les importations fonctionnent dans NodeJS en utilisant Typescript?
Ma configuration est:
Je déconne avec les exportations/importations au lieu de faire un bon codage, ça me rend fou, et je ne trouve aucune explication appropriée de la façon dont cela fonctionne.
Importer
Pouvez-vous s'il vous plaît expliquer ce qui suit:
var module = require ("module");
import module = require("module");
import module from "module";
import {something} from "module";
import * as module from "module";
Exportation
Pouvez-vous s'il vous plaît expliquer ce qui suit
export = something;
export default something;
export interface|class something;
Questions
Je n'arrive pas à trouver la bonne façon de faire des exportations par rapport aux importations, donc mon IDE n'est pas couvert de rouge et me lance des centaines d'erreurs.
Questions générales
La liste des questions s'allonge encore et encore, mais je suis sûr qu'une fois que certaines des réponses ci-dessus ont été répondues, je peux reprendre le reste.
Merci et désolé pour une question aussi générale, mais mon niveau de frustration vient d'atteindre le sommet ...
D'accord, la syntaxe d'importation/exportation prête à confusion pour au moins deux raisons:
var module = require ("module");
fonctionne mais c'est commonjs -> pas de typageimport x = require('y'
) est désormais obsolète dans TSTL; DR; : Utilisez la syntaxe 'style es6' introduite dans TS 1.5
La "meilleure" ressource sur l'importation/exportation dans TS que je connaisse est this
Dans l'ensemble, je recommande de lire ce excellent manuel qui fournira des réponses à la plupart de vos questions
À partir d'une exportation par défaut
Something
a été exporté comme exportation (unique) par défaut, c'est-à-dire export default Something
en ts/es6
Utilisation
import Something from "module"
Vous pouvez réellement importer une exportation par défaut avec un nom différent. import SomethingElse from 'module'
fonctionnera également
À partir d'exportations nommées
Something
a été exporté en tant qu'export nommé dans "module" à l'aide de export {Something}
ou export class|interface Something{}
en ts/es6
Vous ne voulez importer que cela, utilisez
import {Something} from "module"
Vous souhaitez importer tout ce qui est exporté du "module" sous l'espace de noms mod
import * as mod from "module
Utilisez ensuite const c:mod.Something = whatever
Voir import
ci-dessus
La forme export = something
est déconseillé au profit de la nouvelle syntaxe de style ES6. Il se trouve principalement dans les fichiers de définition pour exprimer le fait qu'une bibliothèque js exporte une seule fonction/objet, par exemple module.exports=something
.
Utilisez la syntaxe de style ES6 et évitez les exportations default
: elles ont l'avantage de pouvoir être importées avec un nom différent mais
import {Something as SomethingElse} from "module"
Concrètement, exportez tout ce qui doit être exporté et importez-le spécifiquement
Dans api.ts
export interface MyInterface {
}
export class MyClass {
}
Dans main.ts
import {MyInterface, MyClass} from './api'
Il existe de nombreux bons IDE qui offrent un excellent peluchage: VSCode, Atom TypeScript et Webstorm pour n'en nommer que quelques-uns populaires, les deux premiers étant gratuits et le troisième gère même les importations pour vous .