【问题标题】:Definitions file for simple js module简单 js 模块的定义文件
【发布时间】:2017-11-27 08:58:38
【问题描述】:

我正在尝试为一个小型 npm commonjs 库创建一个肯定类型的定义文件,作为一些打字稿实践。模块的导出如下所示:

module.exports = useNative() ? NativeCustomEvent :
// IE >= 9
'undefined' !== typeof document && 'function' === typeof 
document.createEvent ? function CustomEvent (type, params) {...} 
// IE < 9 
: function CustomEvent(type, params) {...}

在哪里

useNative是一个布尔函数,CustomEvent返回一个事件e和var NativeCustomEvent = global.CustomEvent

我只想为这个简单的模块编写一个干净的 .d.ts 文件。我只是在尝试这样做时有点迷失了。任何指针将不胜感激。


更新:

所以我有/node-modules/custom-event(js 模块) 并添加到/node-modules/@types/ 一个名为/custom-event 的文件夹中,我在其中添加了custom-event.d.ts

到目前为止的代码:

declare module "custom-event" {
    function CustomEvent(type: any, params: any): any
    export = CustomEvent
}

【问题讨论】:

  • 好像应该是NativeCustomEvent | (type: ?, params: ?) =&gt; ...
  • @unional 在 .d.ts?我只是想锻炼如何编写上述.js的定义文件
  • 是的,在 d.ts.对于NativeCustomEvent == global.CustomEvent,您将需要使用@types/node。查看 d.ts 基本结构的手册。
  • @unional 所以我不应该尝试导出 CustomEvent 函数吗? .js 是一个 CustomEvent polyfill

标签: javascript node.js typescript typescript-typings definitelytyped


【解决方案1】:

如果不考虑DT,可以这样做:

// custom-typings/custom-event.d.ts
declare module "custom-event" {
  export = CustomEvent
}

// package.json
{
  "dependencies": {
    "@types/node": ...
  }
}

// tsconfig.json
{
  "include": [
    "custom-typings"
  ]
}

【讨论】:

  • 我能不能只在 manualTypings.d.ts 文件中包含声明模块和其他模块定义,并且在 tsconfig.json 中有:"files" : [ "manualTypings.d.ts"] 并且当然理想情况下我不应该编辑节点的 package.json我安装的模块?
  • package.json 意味着你会做npm install @types/node。如果你的库只使用custom-event,你可以使用npm install -D @types/node
  • 我已经消除了这样的打字稿错误,但是当我导入 CustomEvent = require("custom-event");对于我的 app.ts 主函数​​,当我调用时 polyfill 没有实现:document.addEventListener("auth", (event: AuthEvent) =&gt; { withAccount(event.detail); }); 其中 AuthEvent 扩展了 CustomEvent。顺便感谢您的所有帮助。真的很感激。
  • 只是检查一下,你做了npm i 'custom-event',对吧?检查它是如何使用的。也许不是import CustomEvent = require('custom-event')
  • 我使用纱线所以我做了yarn add custom-event
猜你喜欢
  • 1970-01-01
  • 2011-07-17
  • 2012-11-13
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 2015-08-09
  • 2019-02-20
  • 1970-01-01
相关资源
最近更新 更多