【发布时间】:2021-06-17 10:52:33
【问题描述】:
我正在尝试为我的应用程序中的外部调用声明一个通用包装器类型。
无论如何,有什么东西是一个类型内部的Promise,而不是显式使用Promise<T>
我对一种类型的最佳尝试:
type ExternalResult<T> = Promise<{
success: boolean
data?: T
message?: string
}>
我希望如何使用它:
const getStuff = async (): ExternalResult<Stuff> => {
const data = await myFetchWrapper( /* stuff */ )
if ( data ) {
return {
success: true,
data: data,
}
} else {
return {
success: false,
message: 'Failed to get stuff',
}
}
}
我得到的错误:
TS1055:类型“ExternalResult”在 ES5/ES3 中不是有效的异步函数返回类型,因为它不引用与 Promise 兼容的构造函数值。
我知道我可以从我的 ExternalResult 类型中删除 Promise<> 并使用 Promise<ExternalResult< Stuff >>,但这不是我想要的。
谢谢。
【问题讨论】:
-
我在 ts playground typescriptlang.org/play?#code/… 没有看到任何编译错误
-
尝试将
-target es2015添加到您的tsc调用中,或者将"target": "es2015"添加到您的tsconfig.json中
标签: typescript