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

Relaterede artikler