export interface User {
id: string
name: string
bio: string
public_repos: string
public_gists: string
}
async function getPrismaUser(
ctx: Context,
githubUserId: string,
): Promise<User> {
return await ctx.prisma.user.findOne({ where: { githubUserId } })
}
我尝试在return语句中添加非null断言检查,但该错误不会消失。我唯一的解决方案是“严格”:tsconfig.json中为false吗?
返回类型findOne()
为User | null
(有一些条件,请参见下文)。该联盟类型不匹配你的函数的返回类型getPrismaUser()
是User
。
要解决您的错误,请将的返回类型更改getPrismaUser()
为User | null
。
findOne返回一个普通的旧JavaScript对象,或者返回null。
findOne API调用返回的对象的类型取决于您是否使用select和include选项。
如果您都不使用这些选项,则返回类型将对应于为模型生成的TypeScript类型。
来自Prisma文档。
尽管不是OP要求的,但我要补充一点,他们应该在
null
某种程度上处理这种返回类型的可能性。