如果我要在npm模块中添加类型,我怎么能依赖全局类型呢?
If I'm adding typings to an npm module, how can I depend on global typings?
假设我编写一个节点模块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给了我"无法找到名称'Buffer'消息,这似乎是一件坏事)。一切看起来都很好,所以我更新package.json
中的typings
键并进行部署。
另外,我在一个单独的typescript项目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中时,它会去掉所有的三斜杠引用(最佳实践表明不应该在d.ts文件中包含它们)。当有一个类型文件加载到npm模块中时,没有任何东西被剥离。
m
)中具有有效的类型,而不包括外部项目(p
)中的破碎引用?多谢了!
我能把蛋糕也吃了吗?是否有可能在我的模块(m)中具有有效的类型,而不包括外部项目(p)中的破碎引用?
您没有将node.d.ts
作为参考标记。相反,你指定人们需要在他们的编译上下文中包含node.d.ts
,例如使用tsconfig.json.
相关文章:
- 我怎么能让jQuery对话框表现得像Javascript警报
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 我怎么能把一个类嵌套在另一个类中呢
- 我怎么能把这个代码放在移动设备上运行
- 我怎么能把一个错误当作未捕获的错误来记录呢
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 我怎么能用css或(angular)javascript把句子分成两行,只在特定单词后面
- 我怎么能把它做成这样一个图像就不能拖动了
- 我怎么能同时去锚定并打开Bootstrap手风琴呢
- Github上的流星,我怎么能和朋友一起做同一个项目
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 有没有一个javascript库可以生成这样的垂直切片背景图像?如果没有,我怎么能创建它
- 我怎么能调用 ajax,没有“link_to”类型的帮助者
- 我怎么能在一个URL中有两种类型的参数,其中一种以“”开头#"而另一个以“0”开头&"并且不替
- 当类型=“0”时,我怎么能有一个预先选择的输入;文件”;
- 我怎么能注释我想要任何类型的输入,但与流输出相同类型的东西
- 我怎么能得到表单验证工作时,使用"共享"按钮(而不是“submit”类型的输入元素)
- 我怎么能接受所有的文件类型,除了危险的文件扩展名在HTML
- 我怎么能得到所有的元素和值从一个表单与jquery混合类型
- 如果我要在npm模块中添加类型,我怎么能依赖全局类型呢?