随着我们的项目越来越庞大,我希望从JavaScript切换到TypeScript来帮助管理代码。然而,我们使用了许多amd模块作为库,我们不想将它们转换为TypeScript。
我们仍然希望将它们导入到TypeScript文件中,但我们也不想生成定义文件。我们该如何实现这一点?
例如,新的TypeScript文件:
/// <reference path="../../../../definetelyTyped/jquery.d.ts" />
/// <reference path="../../../../definetelyTyped/require.d.ts" />
import $ = require('jquery');
import alert = require('lib/errorInfoHandler');
在这里,lib/errorInfoHandler
是一个AMD模块,包含在一个我们不想动的大型JavaScript库中。
使用上述代码会产生以下错误:
Unable to resolve external module ''lib/errorInfoHandler''
Module cannot be aliased to a non-module type.
这实际上应该生成以下代码:
define(["require", "exports", "jquery", "lib/errorInfoHandler"], function(require, exports, $, alert) {
...
}
有没有一种方法可以将JavaScript库作为amd模块导入到TypeScript中,并在TypeScript文件内使用它,而不必创建一个定义文件?
declare module
这一部分,只需要在var
之前加上declare
即可。 - drodsoudeclare module "*"
就足够了。 - gronostaj