我正在尝试了解如何正确使用 TypeScript 和经典 JS 节点模块。
我建立了一个非常基本的项目,具有以下文件架构:
.
├── index.ts
├── lodash.d.ts
├── module.ts
└── node_modules
└── lodash
lodash
已安装npm
. 由于它似乎没有提供任何类型信息,我写了一个d.ts
只描述一个功能的基本文件,只是为了取悦tsc
和避免关于不知道的错误lodash
。
lodash.d.ts
declare module "lodash" {
export function reverse(array: any[]): any[];
}
在我的module.ts
文件中,我导入了 lodashrequire
并在模块上公开了一个函数,我在index.ts
文件中使用了该函数。
模块.ts
/// <reference path="./lodash.d.ts" />
import _ = require('lodash');
module FooModule {
export function foo() {
return _.reverse([1, 2, 3]);
}
}
索引.ts
/// <reference path="./module.ts" />
let a = FooModule.foo();
console.log(a);
问题是tsc
(所以 VS Code)告诉我它找不到 name FooModule
。
$ tsc index.ts --module commonjs -outDir build
index.ts(3,9): error TS2304: Cannot find name 'FooModule'.
但是,如果我删除import _ = require('lodash');
from ,它可以正常工作(除了变量现在未定义module.ts
的明显事实)。_
我做错了什么require
吗?