gpt4 book ai didi

typescript - 无论如何在 typescript 中做嵌套的 Pick<> 类型

转载 作者:行者123 更新时间:2023-12-03 09:37:30 25 4
gpt4 key购买 nike

所以我试图在我的客户端 GraphQL 查询上获得安全(所以如果有更好的方法让我知道)。

但我一直在做的是这样定义我的查询。

export const tenantManagePageQuery = async (tenantId: string) =>
graphQLClient.request<{
tenants: TenantManagePageQueryTenant[];
}>(
/* GraphQL */ `
query tenants($tenantId: String!) {
tenants(tenantIds: [$tenantId]) {
id
description
name
approvedUsers {
id
alias
}
pendingUsers {
id
alias
}
}
}
`,
{ tenantId },
);


为了定义 TenantManagePageQueryTenant输入我做这样的事情
interface TenantManagePageQueryTenant
extends Pick<Tenant, 'id' | 'description' | 'name'> {}

基本租户模型是我的 GQL 模型类型。

无论如何要执行这种 Pick 语句,但也要选择嵌套属性。

就像是
interface TenantManagePageQueryTenant
extends Pick<Tenant, 'id' | 'description' | 'name' | Pick<approvedUser| 'id' | 'alias'> {}

最佳答案

@Avius 贴出的代码是在正确的轨道上,但是扩展交集类型的接口(interface)会产生错误。我相信你需要使用类型:

type TenantManagePageQueryTenant = Pick<Tenant, 'id' | 'description' | 'name'>
& { approvedUsers: Pick<ApprovedUser, 'id' | 'alias'>[] }
{ }

interface Tenant {
id:string;
description:string;
name:string;
}

interface ApprovedUser {
id:string;
alias:string;
}

let tenant:TenantManagePageQueryTenant = {
id: "123",
description: "456",
name: "789",
approvedUsers: [{
id: "aaa",
alias: "bbb" // To see the desired type warning, try removing 'alias'
}]
}
Playground Link

关于typescript - 无论如何在 typescript 中做嵌套的 Pick<> 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58002078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com