我正在尝试为以下函数的成员提供类型。
args是具有data类型属性的对象UserCreateInput
所以,从这个:
createUser(parent: any, args: any, context: any) {
return context.prisma.createUser(args.data)
}
Run Code Online (Sandbox Code Playgroud)
我是这样写的:
createUser(parent: any, args: {data: UserCreateInput}, context: any) {
return context.prisma.createUser(args.data)
}
Run Code Online (Sandbox Code Playgroud)
我不确定如何替换“xxx”,createUser(parent: any, xxx, context: any)所以我可以简单地返回return context.prisma.createUser(data)
Tit*_*mir 24
您可以使用对象解构语法:
createUser(parent: any, { data }: { data: UserCreateInput }, context: any) {
return context.prisma.createUser(data)
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,它需要你写data两次。有一个建议可以解决这个问题,但存在一些问题。
内联对象类型的一种广泛使用且可以说不太难看的替代方案是将解构对象定义为命名的 args 或 props 类型。例如:
interface CreateUserArgs {
data: UserCreateInput
}
createUser(parent: any, { data }: CreateUserArgs, context: any) {
return context.prisma.createUser(data)
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,它仍然需要复制属性名称(并且意味着您需要为其命名),但它有两个潜在的好处: