我是TypeScript的新手,尝试加载lodash时遇到问题。
这是我的代码:
///<reference path="../../typings/lodash/lodash.d.ts"/>
///<reference path="../interfaces/IScheduler.ts"/>
import _ = require('lodash');
module MyModule {
export class LeastUsedScheduler implements IScheduler {
/// CODE HERE
}
}
我尝试通过以下方式替换导入行:
import * as _ from lodash;
在两种情况下,我得到:
"error| Cannot find name 'IScheduler'."
当我删除导入指令时,它可以完美编译,但是_在运行时未定义。
我也尝试将导入操作放入模块中而没有成功。
对不起,这肯定是一个非常愚蠢的问题,但我无法弄清楚。
谢谢
编辑:
我了解这个问题。引用lodash的类型会在范围内创建变量
_
。这就是为什么无需导入行即可编译良好的原因。问题是引用类型并没有真正导入lodash。这就是为什么它在运行时失败。当我导入lodash时,编译失败,因为lodash已在范围内。
谢谢您的支持。
最佳答案
对于这个问题,我不是100%的人,但是您可以尝试以下方法,让我知道如何进行吗?
///<reference path="../../typings/lodash/lodash.d.ts"/>
///<reference path="../interfaces/IScheduler.ts"/>
import _ = require("lodash");
export class LeastUsedScheduler implements IScheduler {
doSomething(){
_.each([],function name(parameter) {
// ...
});
}
}
编译后看起来像:
var _ = require("lodash");
var LeastUsedScheduler = (function () {
function LeastUsedScheduler() {
}
LeastUsedScheduler.prototype.doSomething = function () {
_.each([], function name(parameter) {
throw new Error("Not implemented yet");
});
};
return LeastUsedScheduler;
})();
exports.LeastUsedScheduler = LeastUsedScheduler;
如果导入模块
import _ = require("lodash");
但不使用它,TypeScript将删除导入(出于这个原因,我添加了doSoemthing方法)。更新:为什么不起作用?
问题是
module
关键字用于声明内部模块。同时,代码正在加载外部模块。您应该避免混合使用内部和外部模块。您可以在http://www.codebelt.com/typescript/typescript-internal-and-external-modules/上了解有关内部和外部模块之间差异的更多信息。另外,如果您使用内部模块,请避免使用
module
关键字,因为它已被弃用,而应使用namespace
关键字。关于node.js - 无法导入lodash,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32897567/