小编典典

在打字稿中,如何定义异步函数的类型

all

我试图定义一种异步函数,但编译失败,见下文:

interface SearchFn {
    async (subString: string): string;
}

class A {
    private Fn: SearchFn
    public async do():Promise<string> {
        await this.Fn("fds") // complain here: cannot invoke an expression whose type lacks a call signature
        return ''
    }
}

谁能帮我解决这个问题?


阅读 126

收藏
2022-08-17

共1个答案

小编典典

发现这个搜索如何为异步箭头函数声明“typedef”。

如果你只是将函数的返回类型声明为 Promise,它就可以工作:

interface SearchFn {
    (subString: string): Promise<boolean>;
}

或作为类型声明:

type SearchFn = (subString: string) => Promise<boolean>;

Microsoft 的 TS Linter 将推荐第二种语法。

2022-08-17