Question

Dojo 1.8 already defines AMD modules. For example you can do things like this:

require(["dojo/_base/lang"], function (lang) {
  var ab = lang.mixin({a: 1}, {b: 2});
});

But how to I avoid getting an error when I attempt to import this module?

import lang = module ("dojo/_base/lang");

Is is possible?

Était-ce utile?

La solution

You will need a typescript definition file for lang. Assuming that lang.d.ts exists in the same directory as lang.js this code:

import lang = module('dojo/_base/lang')

var ab = lang.mixin({a: 1}, {b: 2});

compiled with

tsc --module amd yourfile.ts

generates

define(["require", "exports", 'dojo/_base/lang'], function(require, exports, __lang__) {
    var lang = __lang__;
    var ab = lang.mixin({a: 1}, {b: 2});
}

If you don't want to have to match up the directory structures for whatever reason do this instead. Assuming lang.d.ts is in in a subdirectory called 3rd that is a sibling of test.ts.

test.ts:

///<reference path="3rd/lang.d.ts"/>
import lang = module('dojo/_base/lang');
var ab = lang.mixin({a: 1}, {b: 2});

3rd/lang.d.ts:

declare module 'dojo/_base/lang' {
...
}

generates the same as above.

Autres conseils

You can normally load modules via the dojo loader, you don't have to use the import statement. But if you want you have to declare the module:

declare module "dojo/_base/lang" {
  export function ...
  export class ...
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top