本文介绍了在打字稿中,如何定义异步函数的类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试定义一种异步函数,但是编译失败,见下图:
I tried to define a type of async function, but failed in compilation, see below:
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 ''
}
}
谁能帮我解决这个问题?
Can anyone help me work this out?
推荐答案
发现这个搜索如何为异步箭头函数声明typedef".
Found this searching how to declare a "typedef" for an async arrow function.
如果你只是将函数的返回类型声明为 Promise 就可以了:
It works if you just declare the return type of the function to be a Promise:
interface SearchFn {
(subString: string): Promise<boolean>;
}
或作为类型声明:
type SearchFn = (subString: string) => Promise<boolean>;
Microsoft 的 TS Linter 将推荐第二种语法.
Microsoft's TS Linter will recommend this second syntax.
这篇关于在打字稿中,如何定义异步函数的类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!