我目前遇到我的打字稿编译问题。
我在OpenLayers (3.0.0 Beta 1) 上使用最新版本,并尝试将其集成到我的 AMD 模块中。我确切地说我并不真正熟悉 AMD 机制和打字稿。
为了管理由 OpenLayers3 创建的地图,我正在创建一个新模块:
OlMap.ts
/// <reference path="../_import.ts" />
import ol = require('ol');
/*
* Custom class used to wrap the OpenLayers Map class.
* This is used to extend the functionnalities (i.e. controls)
* Defined following the chaining method pattern.
*
* @module OlMap
* @class
*/
class OlMap {
// My code here
}
为了更容易使用 OpenLayers3(不是 AMD),我创建了一个名为ol3.d.ts的定义文件,它被引用到我的 _import.ts
我的问题是,当我尝试编译它时,我收到了错误:
OlMap.ts<3.1> error TS2071: Unable to resolve external module ''ol''
OlMap.ts<3.1> error TS2072: Module cannot be aliased to a non-module type.
编译文件如下所示:
/// <reference path="../_import.ts" />
define(["require", "exports", 'ol'], function(require, exports, __ol__) {
var ol = 'ol';
但它应该更像:
/// <reference path="../_import.ts" />
define(["require", "exports", 'ol'], function(require, exports, __ol__) {
var ol = __ol__;
如果我像以前的代码(var ol = __ ol__;)一样手动编辑生成的 javascript 文件,我没有依赖关系问题,但生成的文件由于编译错误而产生错误。
有任何想法吗 ?谢谢
编辑:我没有将 OpenLayer javascript 文件集成到 HTML 中。OpenLayer 不是 AMD 库,所以我使用的是 RequireJS 的 Shim。