DefinitelyTyped 的 Lodash

DefinitelyTyped Lodash

我想从 lodash 导入单个函数,同时保留类型。比如这样:

import invokeMap from 'lodash/invokeMap';

但是我好像做不到。编译器说没有模块 lodash/invokeMap。这是正确的 — DefinitelyTyped 只为 lodash 声明了顶级模块,所以我只能导入整个包。但是我只想导入一个函数。

有没有办法只导入关于 lodash 的类型信息而不导入 lodash 本身?

以下是我的解决方案。我想使用标准的 CommonJS require 函数来导入没有类型信息的必要函数,然后将类型转换到它上面:

declare var require;

var invokeMap: _.invokeMap = require('lodash/invokeMap');
               ^^^^^^^^^^^
               Here I want to cast proper type from DefinitelyTyped,
               but how to reach that `invokeMap` typings alone?

您可以使用对象解构从模块中只导入invokeMap函数。

import {invokeMap} from 'lodash';

invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');

使用当前的 typings lodash,这应该可以像您之前尝试的那样工作:

import invokeMap from 'lodash/invokeMap';

只需像这样安装当前版本的环境依赖项:

typings i -SA github:DefinitelyTyped/DefinitelyTyped/lodash/lodash.d.ts#672afd8f7b09d839b61eeb4867753876cf79c8b6

从 TypeScript 2 开始,您可以直接从 npm 安装类型:

npm install @types/lodash

这些类型对每个单独的模块都有声明。