为接受其他函数作为参数的函数创建Typescript接口

时间:2016-10-29 08:12:37

标签: typescript

我有一个案例,我正在传递解决方案并将Promise函数作为委托拒绝到另一个函数中:

//The function
someFunc(x, y, resolve, reject);

但是我无法以不会引发以下错误的方式创建我的界面:

Argument of type '(value?: {} | PromiseLike<{}>) => void' is not assignable to parameter of type '(reason?: any) => Promise<void>'.

类型'void'不能分配给'Promise'类型。

我的界面目前如下:

someFunc(prop1: string, prop2: string, callingFunctionResolve?: Promise<void>, callingFunctionReject?: Promise<void>);

我也试过了,但收到了一个不同的错误:

callingFunctionResolve(reason: any)?: Promise<void>, callingFunctionReject(reason?: any)?: Promise<void>)

 A parameter initializer is only allowed in a function or constructor implementation.

目前在Typescript中有一种方法可以用这种方式完成委托吗?我已经看到了一些建议,但没有发现任何有用的东西,或者是这种用例的确切类型。

1 个答案:

答案 0 :(得分:0)

您可以查看lib.es6.d.ts文件,找出解决/拒绝功能的签名 它们在PromiseConstructor

中定义
<a [routerLink]="['/Home/ViewUserDetails','View Channel User']">View Channel User</a>

所以你的功能应该是:

interface PromiseConstructor {
    ...

    new <T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>;

    ...
}

然后你可以:

function someFunc(
    prop1: string,
    prop2: string,
    callingFunctionResolve?: (value?: void | PromiseLike<void>) => void,
    callingFunctionReject?: (reason?: any) => void) { }

code in playground