当前位置 : 主页 > 大数据 > 区块链 >

promise.prototype.finally的TypeScript类型定义

来源:互联网 收集:自由互联 发布时间:2021-06-22
我在Node应用程序中使用这个名为 promise.prototype.finally的ES6 Promise兼容最终实现,我希望将其转换为TypeScript,但是我在 DefinitelyTyped上找不到这个包的可用类型.在这些情况下我写了我自己的即
我在Node应用程序中使用这个名为 promise.prototype.finally的ES6 Promise兼容最终实现,我希望将其转换为TypeScript,但是我在 DefinitelyTyped上找不到这个包的可用类型.在这些情况下我写了我自己的即兴类型我需要的功能子集的定义,但在这种情况下,它是一个修改Promise对象原型的库,我没有遇到任何传统方式在TypeScript中表示它.有任何想法吗?

可能相关:

> https://github.com/Microsoft/TypeScript/issues/280
> https://github.com/Microsoft/TypeScript/issues/7015
> https://github.com/Microsoft/TypeScript/issues/6722
> Declaration merging with ES6 style modules

虽然Slava的答案是正确的,但它只涉及finally块的输入.要将填充程序实际合并到代码中,以便可以编写p.finally(()=> {…}),则需要调用填充程序.

不幸的是typings on DefinitelyTyped目前不支持垫片功能所以until this is supported,我建议你自己添加这些打字机.

declare interface Promise<T> {
  finally<U>(onFinally?: () => U | Promise<U>): Promise<U>;
}

declare module 'promise.prototype.finally' {
  export function shim(): void;
}

这些类型现在可用.安装时

npm install --save-dev @types/promise.prototype.finally

在TypeScript代码中,在应用程序引导期间,您可以调用

import { shim } from 'promise.prototype.finally';
shim();

这会将finally块添加到Promise原型中,允许您根据需要使用finally.

网友评论