async 函数作为 hacklang 中的类型
async function as type in hacklang
我正在尝试构建一个 shape
,其中键是字符串,值是函数。这对于常规函数工作正常,但对于异步函数会出错。以下是我正在尝试做的事情
const type TAbc = shape(
'works' => (function (): string),
'doesnt_work' => (async function(): Awaitable<string>)
);
这会导致错误 A type specifier is expected here.Hack(1002)
Encountered unexpected text async, was expecting a type hint.Hack(1002)
这在 Hacklang 中是非法的吗?如果是那么想知道为什么?
async function (): T
在 Hacklang 中是非法的。建议的方法是在 return 类型中定义它,Awaitable<T>
.
所以为了让这个工作我们可以这样做
const type TAbc = shape(
'sync' => (function (): string),
'async' => (function(): Awaitable<string>)
);
在初始化这种类型的实例时,我们可以在内部调用异步函数。例如:
$abc = shape(
'async' => function(): Awaitable<string> {
return someAsyncFunction();
});