我有一个奇怪的场景,我试图获取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.ts
和min-lodash.d.ts
文件。
答案 0 :(得分:0)
如果这是您的工作流程,并且有更好的解决方案,那么很有可能出现 错误。
也就是说,有几种方法可以做到这一点。
将缩小的破折号放在min-lodash.js
中,并创建具有以下内容的min-lodash.d.ts
:
declare const lodash: typeof import('lodash')
export = lodash
这可能是更好的选择,因为它会将类型声明保留在缩小的文件之外,并且仅用于类型推断。
在min-lodash.ts
中声明缩小包的类型,并使用export =
生成导出。这是否有效取决于您如何缩小捆绑包。如果要创建UMD捆绑包,则可以将以下内容添加到缩小的捆绑包的末尾。
const lodash: typeof import('lodash') = module.exports
export = lodash