我有一个接口和一个实现方法的类,我现在还没有找到问题的答案。我在接口中定义了一个函数myAsyncFunction()
,我想让它异步:
export interface State {
state: Class;
myAsyncFunction(): any;
}
对于调用者来说,异步函数只是一个返回promise的函数:
export interface State {
state: string;
myAsyncFunction(): Promise<any>;
}
const state : State = {
state: 'foo',
myAsyncFunction: async () => 'bar'
};
TypeScript不关心函数是否使用async
关键字。它只关心它是一个函数,它需要什么参数,以及返回值是什么
async
关键字在该上下文中唯一的意义是,函数将返回一个promise…,它将与any
匹配。
函数在返回Promise时是异步的。以下是如何在接口中定义异步函数的示例:
interface Foo {
bar: () => Promise<void>
}
您可以使用任何想要的返回类型,当然也可以使用任何需要的参数,而不是void
,例如:
interface Foo {
bar: (test: string) => Promise<boolean>
}