【发布时间】:2025-12-22 02:05:07
【问题描述】:
假设我写了一个节点模块,m。后来,我决定向它添加 Typescript 类型。好在模块只导出了一个函数,所以m.d.ts文件如下:
/// <reference path="./typings/globals/node/index.d.ts" />
declare module "m" {
doThings(b: Buffer): int;
export = doThings;
}
我的函数使用节点的Buffer,所以我在已安装的typings 文件夹中包含了对节点类型的有效引用(没有它,Sublime 给我“找不到名称'缓冲区'消息,这似乎很糟糕事情)。一切看起来都不错,所以我更新了我的package.json 中的typings 密钥并部署。
另外,我在一个单独的打字稿项目p 中使用模块m。我不必担心使用typings,因为我的模块包含了类型。当我运行tsc 时,我收到以下错误:node_modules/m/m.d.ts(6,1): error TS6053: File '/Users/$USER/projects/p/node_modules/m/typings/globals/node/index.d.ts' not found. 这很有意义,因为在node_modules 中没有typings 文件夹(我在印象中检查生成的文件夹是不鼓励的)。当一个类型文件被加载到DefinitelyTyped 中时,它会去掉所有的三斜杠引用(并且best practices 说你不应该将它们包含在d.ts 文件中)。当有一个类型文件加载到 npm 模块中时,什么都不会被剥离。
所以,我的问题是:我可以吃蛋糕吗?是否可以在我的模块 (m) 中有有效的类型,而不包括外部项目中的损坏引用 (p)?
非常感谢!
【问题讨论】:
标签: javascript node.js typescript npm