对象 'err' 的类型未知
Object 'err' is of type unknown
所以我正在查看后端的一些代码,我注意到任何地方的方法前面都有 async
,在 try/catch
语句中 TypeScript 抱怨 err
对象,说 Object 'err' is unknown
,但同步方法不会出现这种情况。
async createOrganization(dbSession: ClientSession, organization: IOrganization): Promise<IOrganization> {
try {
// @ts-ignore
const newOrganization = new this.Model(organization)
// @ts-ignore
await newOrganization.save()
// @ts-ignore
return newOrganization
} catch (err) {
throw new OrganizationCreationError(err.message)
}
}
在异步方法中使用 try/catch
会导致 err
对象未知,我该如何解决?
catch 子句变量的历史类型为 any
,但由于 strict
编译器选项(或新的 useUnknownInCatchVariables
选项)下的 TypeScript 4.4 现在类型为作为 unknown
。它与方法是否同步无关。
如果您在属于相同 TypeScript 版本和编译器选项的代码库的某些其他部分没有看到此错误,请考虑以下几个可能的原因:
- catch 子句变量没有以与
unknown
类型不兼容的方式使用,也许它被传递给接受 unknown
或 any
类型参数的函数.
- catch 子句变量明确类型化为
any
。
所以我正在查看后端的一些代码,我注意到任何地方的方法前面都有 async
,在 try/catch
语句中 TypeScript 抱怨 err
对象,说 Object 'err' is unknown
,但同步方法不会出现这种情况。
async createOrganization(dbSession: ClientSession, organization: IOrganization): Promise<IOrganization> {
try {
// @ts-ignore
const newOrganization = new this.Model(organization)
// @ts-ignore
await newOrganization.save()
// @ts-ignore
return newOrganization
} catch (err) {
throw new OrganizationCreationError(err.message)
}
}
在异步方法中使用 try/catch
会导致 err
对象未知,我该如何解决?
catch 子句变量的历史类型为 any
,但由于 strict
编译器选项(或新的 useUnknownInCatchVariables
选项)下的 TypeScript 4.4 现在类型为作为 unknown
。它与方法是否同步无关。
如果您在属于相同 TypeScript 版本和编译器选项的代码库的某些其他部分没有看到此错误,请考虑以下几个可能的原因:
- catch 子句变量没有以与
unknown
类型不兼容的方式使用,也许它被传递给接受unknown
或any
类型参数的函数. - catch 子句变量明确类型化为
any
。