Javascript 仅使用amd中使用的环境定义导入TypeScript模块
我有一个依赖于主干网的模块。我有一个Javascript 仅使用amd中使用的环境定义导入TypeScript模块,javascript,requirejs,typescript,amd,Javascript,Requirejs,Typescript,Amd,我有一个依赖于主干网的模块。我有一个主干.d.ts定义,但TypeScript似乎不想编译我的模块,除非 import Backbone = module("backbone") 实际上指向有效的主干模块,而不是定义文件。我正在使用AMD加载的模块,并为主干定义了requirejs垫片 /// <reference path="scripts/typings/backbone/backbone.d.ts" /> /// <amd-dependency path="backbo
主干.d.ts
定义,但TypeScript似乎不想编译我的模块,除非
import Backbone = module("backbone")
实际上指向有效的主干模块,而不是定义文件。我正在使用AMD加载的模块,并为主干定义了requirejs垫片
/// <reference path="scripts/typings/backbone/backbone.d.ts" />
/// <amd-dependency path="backbone" />
import bb = require('backbone');
interface IApi {
version: number;
Events: bb.Events;
}
class Api implements IApi {
public version = 1;
public Events: bb.Events = null;
}
除了创建假主干.ts模块定义外,还有其他解决方法吗
更新:解决方案的一个副作用是这样的代码不再有效,因为模块不再存在。因为requirejs垫片,它需要存在。我所知道的唯一解决方法是使用两个.d.ts文件。一个用于使用主干作为导入的文件,该文件不包括
声明模块
位。另一个用于使用//的TypeScript语言自最初的答案以来发生了相当大的变化
例如,要导入一个外部模块,请使用require
(我的原始答案使用了旧的模块
关键字):
下面是导入主干网的一个常见用例-使用来自以下文件的类型信息:
/// <reference path="scripts/typings/backbone/backbone.d.ts" />
import bb = require('backbone');
所以原来的问题可以用…来解决
/// <reference path="scripts/typings/backbone/backbone.d.ts" />
import bb = require('backbone');
interface IApi {
version: number;
Events: bb.Events;
}
class Api implements IApi {
public version = 1;
public Events: bb.Events = null;
}
实际上还有另一种方法来处理:
克隆Github存储库。它包含jquery.d.ts
、backbone.d.ts
和许多其他定义文件
将定义文件链接到您的myfile.ts
文件:
//
//
将amd依赖项添加到javascript库:
//
要在myfile.ts文件中使用$
,您现在可以调用require:
var$=require(“jquery”)代码>
完整版本的myfile.ts
:
/// <reference path="DefinitelyTyped/requirejs/require.d.ts" />
/// <reference path="DefinitelyTyped/jquery/jquery.d.ts" />
/// <amd-dependency path="jquery"/>
var $ = require("jquery");
export function helloWorld() {
$("<div>Hello World</div").appendTo(document.body);
}
我只是在VisualStudio中尝试这一点,并重新创建您的问题。让我看看我能不能解决这个问题!在我的测试中,我发现环境声明必须省略模块
块,就像AMD或CommonJS中的普通模块一样。有趣的是,我没有看到
之前让我摆脱了错误,谢谢!
/// <reference path="scripts/typings/backbone/backbone.d.ts" />
/// <amd-dependency path="backbone" />
import bb = require('backbone');
interface IApi {
version: number;
Events: bb.Events;
}
class Api implements IApi {
public version = 1;
public Events: bb.Events = null;
}
/// <reference path="DefinitelyTyped/requirejs/require.d.ts" />
/// <reference path="DefinitelyTyped/jquery/jquery.d.ts" />
/// <amd-dependency path="jquery"/>
var $ = require("jquery");
export function helloWorld() {
$("<div>Hello World</div").appendTo(document.body);
}
define(["require", "exports", "jquery"], function(require, exports) {
var $ = require("jquery");
function helloWorld() {
$("<div>Hello World</div").appendTo(document.body);
}
exports.helloWorld = helloWorld;
});