【问题标题】:How can I write TypeScript definition files that depend on another definition file?如何编写依赖于另一个定义文件的 TypeScript 定义文件?
【发布时间】:2016-07-10 23:51:13
【问题描述】:

我正在为现有节点库编写一个 TypeScript 定义文件,它使用 httpevents.EventEmitter 等构建节点模块作为参数。

我的问题是如何为这个库编写定义文件?我曾尝试将这些模块从 node.d.ts 复制到我自己的定义文件中,但我认为这不是一个好主意。

【问题讨论】:

  • 不确定use node module as parameter 是什么意思您指的是从另一个.d.ts 文件中导入定义吗?
  • 该库是用vanilla js编写的,当我想为这个库写一个d.ts文件时,有一个函数将events.EventEmtter作为参数,如function(emitter),我不知道如何从node.d.ts导入EventEmitter,即使我可以从node.d.ts导入eventEmtter,如何让用户自动下载node.d.ts?

标签: typescript .d.ts


【解决方案1】:

您的模块应该在您的.d.ts 文件中包含它自己的node.d.ts 文件(我们称之为my_awesome_lib.d.ts

在您的.d.ts 文件中,您可以包含以下必要的类型:

declare module 'my_awesome_lib' {
  import * as express from 'express'; // just as example
  import { EventEmitter } from 'events'; // here you go
  export function foo(EventEmitter e): boolean; // your function
}

【讨论】:

    【解决方案2】:

    使用带有 typings.json 文件的 Typings 工具来管理 TypeScript 定义依赖项。

    查看该项目的FAQ

    首先创建一个新的typings.json 文件,然后将依赖项添加为 普通的。当您在本地发布到 GitHub 时,与您的包一起发布 (NPM 或 Bower)甚至到你自己的网站,其他人可以参考 它并使用它。

    {
      "name": "typings",
      "main": "path/to/definition.d.ts",
      "author": "Blake Embrey <hello@blakeembrey.com>",
      "description": "The TypeScript definition dependency manager",
      "dependencies": {}
    }
    
    • ma​​in 定义的入口点(规范为 NPM 的 package.json 中的“main”)
    • browser 一个字符串或路径映射,当 解析(遵循浏览器字段规范)
    • ambient 表示这个定义必须安装为ambient
    • 名称此定义的名称
    • postmessage 安装后向用户发送的消息
    • version 输入此定义的 semver 范围
    • 依赖项需要安装的依赖项地图
    • devDependencies 需要安装的开发依赖关系图
    • ambientDependencies 可能需要安装的环境依赖关系图
    • ambientDevDependencies 可能需要安装的环境开发依赖关系图

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2016-09-11
      • 2021-08-04
      • 2011-08-14
      • 2016-04-04
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多