TypeScript version 2.2.2
J'ai écrit ce besoin dans mon UserRoutzr.ts
const users = <IUser[]> require(path.join(process.cwd() + "/data"));
TSLint lance l'avertissement suivant:
require statement not part of an import statement
si je l'ai changé pour:
import users = <IUser[]> require(path.join(process.cwd() + "/data"));
Ensuite, il soulève une erreur:
TS1003 Identifier expected
Comment dois-je réécrire cette condition? ?__. Merci pour vos commentaires
Les modules TypeScript sont une implémentation des modules ES6. Les modules ES6 sont statiques. Votre problème provient du chemin dynamique: path.join(process.cwd() + "/data")
. Le compilateur ne peut pas déterminer le module à la compilation.
Vous devez utiliser un chemin statique vers le module. Au moment de la compilation, TypeScript le résout. Et cela affecte le type exporté à droite (IUser[]
) à users
.
import users = require("./yourModuleThatExportsUsers");
Remarque: Si votre module data
contient uniquement des données, vous pouvez envisager de le remplacer par un fichier JSON, qui pourrait être chargé (Node.js) ou fourni (Webpack).
peut-être avez-vous besoin de chargement dynamique du module , et le code comme ceci:
import {IUser} from './lib/user';
const users:IUser[] = require(path.join(process.cwd() + "/data"));