dojo - Typescript 可以使用现有的 AMD 吗?

标签 dojo typescript js-amd

Dojo 1.8 已经定义了 AMD 模块。例如,您可以执行以下操作:

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

但是当我尝试导入此模块时如何避免出现错误?

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

可以吗?

最佳答案

您将需要 lang 的 typescript 定义文件。假设 lang.d.tslang.js 存在于同一目录中,以下代码:

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

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

编译

tsc --module amd yourfile.ts

生成

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

如果您不想出于任何原因匹配目录结构,请改为执行此操作。假设 lang.d.ts 位于名为 3rd 的子目录中,该子目录是 test.ts 的同级目录。

测试.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' {
...
}

生成与上面相同的内容。

关于dojo - Typescript 可以使用现有的 AMD 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13073404/

相关文章:

javascript - 同一页面上有多个Requirejs

jquery - 如何使用 Typescript 通过 AMD 模块加载 Jquery 插件

typescript - 用 Jest 在 typescript 中模拟导入的类

java - JavaScript中是否有类似Java Set的数据结构?

events - Dojo:主题与事件,应该考虑哪些设计注意事项?

javascript - Dojo 树菜单展开节点 OnMouserOver

typescript - Angular2 RC4 路由器 : Get the RouteConfigs "data"-Property from Router-Events Subscription in a Service

javascript - 元素隐式具有 'any' 类型,因为类型 'xxx' 没有索引签名。ts(7017)

javascript - require.js : Access all loaded modules

dojo - 将 Dojo 剥皮为企业形象