TypeScript:如何将类型声明绑定到import语句

时间:2017-05-18 19:24:20

标签: typescript definitelytyped

我正在尝试为es6-promisify创建一个类型定义,这是一个不在DefinitelyTyped注释存储库中的JS包。查看DefinitelyTyped中的示例并关注TS Deep Dive / Declaration Files,我创建了一个粗略的注释,我在项目中保存在vendor.d.ts中:

declare function promisify(original: (...args: any[]) => any, settings: any): Promise<any>

export = promisify
// export interface promisify { } // or should I do an interface?

现在,考虑到我使用import promisify = require('es6-promisify')导入,如何告诉TypeScript promisify导入是否在vendor.d.ts中注释?目前,tsc仍在继续Could not find a declaration file for module 'es6-promisify'. 'promisify.js' implicitly has an 'any' type.我正在尝试消化TS Docs / Module Resolution,但到目前为止我还没有成功。

换句话说:TypeScript用于从导入中解析声明文件的机制是什么? XY problem警告:也许我做错了,不应该做vendor.d.ts?也许有一个很好的理由es6-promisify不在DT?随意与更好的方法相矛盾,达到我的目标,即"noImplicitAny": true快乐。谢谢:))

1 个答案:

答案 0 :(得分:1)

以下适用于我。

es6-promisifiy.d.ts

declare module "es6-promisify" {
  export default function promisify(original: (...args: any[]) => any, settings: any): Promise<any>
}

用法:

import promisify from "es6-promisify";
...
const xyz = promisify(whatever, whatever);

tsconfig.json:

{
    "compilerOptions": {
        ...
        "typeRoots": [
            "./node_modules/@types",
            "./custom_typings"
        ]
    },
    ...
}

希望这有帮助。