将类型模块(@ type / lodash)分配给lodash的本地化版本

时间:2018-12-30 10:46:05

标签: javascript typescript

我有一个奇怪的场景,我试图获取NPM上存在的模块并缩小该模块。但是,我想保留类型。例如,让我们以lodash为例,与之对应的@types/lodash,我想做的就是我可以将缩小的lodash拿来命名为./min-lodash.ts, d在执行此操作时,我想在我的代码中引用./min-lodash.ts,这使它的键入变得松散,因为这些类型模块由似乎是包名的名称空间定义。然后,我假设如果添加了这样的内容:

/// <reference path="../node_modules/@types/lodash/index.d.ts" />

在文件的顶部,我将能够从类型模块中引入类型。但是可惜情况并非如此。

我正在寻找一种基本上将类型化模块定义分配给任意文件的方法。

这可能吗?

基本上我想做的是以下(另一种思考方式):

  

lodash.ts

import * as lodash from 'lodash'
export = lodash
  

lodash.d.ts

declare const lodash: typeof import('lodash')
export = lodash

我正在寻找一种方法来将这两个文件最小化为一个文件或两个新的min-lodash.tsmin-lodash.d.ts文件。

1 个答案:

答案 0 :(得分:0)

如果这是您的工作流程,并且有更好的解决方案,那么很有可能出现 错误。

也就是说,有几种方法可以做到这一点。

  1. 将缩小的破折号放在min-lodash.js中,并创建具有以下内容的min-lodash.d.ts

    declare const lodash: typeof import('lodash')
    export = lodash
    

    这可能是更好的选择,因为它会将类型声明保留在缩小的文件之外,并且仅用于类型推断。

  2. min-lodash.ts中声明缩小包的类型,并使用export =生成导出。这是否有效取决于您如何缩小捆绑包。如果要创建UMD捆绑包,则可以将以下内容添加到缩小的捆绑包的末尾。

    const lodash: typeof import('lodash') = module.exports
    export = lodash