我正在尝试为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
快乐。谢谢:))
答案 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"
]
},
...
}
希望这有帮助。