TypeScript 从npm导入模块

示例

如果模块具有类型定义文件(d.ts),则可以使用import语句。

import _ = require('lodash');

如果您没有模块的定义文件,TypeScript将在编译时抛出错误,因为它找不到您要导入的模块。

在这种情况下,可以使用正常的运行时require功能导入模块。但是,这将其返回为any类型。

// _变量的类型为any,因此TypeScript将不执行任何类型检查。
const _: any = require('lodash');

从TypeScript 2.0开始,当没有模块的类型定义文件时,还可以使用简写的环境模块声明来告诉TypeScript模块存在。但是,在这种情况下,TypeScript将无法提供任何有意义的类型检查。

declare module "lodash";

// 您现在可以按照任何希望的方式从lodash导入:
import { flatten } from "lodash";
import * as _ from "lodash";

从TypeScript 2.1开始,规则进一步放宽了。现在,只要node_modules目录中存在一个模块,即使没有任何地方的模块声明,TypeScript都将允许您导入它。(请注意,如果使用--noImplicitAny编译器选项,则以下内容仍会生成警告。)

// Will work if `node_modules/someModule/index.js` exists, or if `node_modules/someModule/package.json` has a valid "main" entry point
import { foo } from "someModule";