Hvordan importerer man eksterne moduler inde i en løkke i TypeScript?
Jeg forsøger at importere "ui" inde i loopet (for dynamisk indlæsning baseret på _moduleList). Dette virker fint:
var _moduleList: Array<string>;
_moduleList.push("mdlGame");
import _tmp = require("ui");
for (var _i: number = 0; _i < _moduleList.length; ++_i) {
}
Da dette viser en rød bølget linje under import, med teksten "Uventet token; 'statement' forventet.".
var _moduleList: Array<string>;
_moduleList.push("mdlGame");
for (var _i: number = 0; _i < _moduleList.length; ++_i) {
import _tmp = require("ui");
}
Tæller import ikke som en erklæring? Hvad foregår der her, og er der en måde, jeg kan omgå det på?
Svar #1
Tiden gik, men OP's problem funktion fortsætter.
Jeg fandt dog lige en delvis løsning (ved at bruge namespace-importmønsteret), som i dette eksempel.
Jeg importerede en index.ts-fil, skrevet sådan her:
import { A } from './some/a';
import { B } from './some/other/b';
export { A, B }; // you'll save this list
export const LIST: any[] = [ A, B ]; // and this other too
At gemme de to lister var mit formål, fordi de hver især var lange med titusindvis af elementer og fortsatte med at vokse.
moduler.ts
export { A } from './some/a'; export { B } from './some/other/b';liste.ts
import * as modules from './modules'; export const LIST: any[] = Object.keys(modules).map(key => modules[key]);index.ts
export * from './modules'; export * from './list';
Alt fungerer som forventet, og det er helt DRY.
Svar #2
Du kan kun bruge import-nøgleordet på rodniveauet i din fil, f.eks.:
declare module"ui"{}
// Bad
{
import foo = require("ui");
}
// okay
import bar = require("ui");
Hvis du virkelig virkelig vil have det, kan du falde tilbage på grundlæggende JS :
declare module"ui"{}
declare var require;
// okay now
{
var foo = require("ui");
}
men så mister du typesikkerheden mellem de to filer
