TypeScript 类型选择查询

svmlkihl  于 2个月前  发布在  TypeScript
关注(0)|答案(2)|浏览(27)

要实现类似GraphQL的类型查询,可以使用类似于Pick<Type, 'a' | 'b' | 'c'>的语法。这种语法可以用于选择具有相似属性的类型。例如,

prop: AType[{a, b, c: { d }]

等价于

prop: Pick<AType, 'a' | 'b'> & {c: Pick<AType['c'], 'd'>}

。在实际应用中,这种语法的使用频率取决于具体情况。

kx5bkwkv

kx5bkwkv1#

我喜欢这个想法。虽然我相信这已经存在了(某种程度上)。

type A = {
  B: {
    C: [
      {D: "E"}
    ]
  }
}

type E = A extends {B: {C: [{D: infer E}]}} ? E : never;

Playground链接
如果要为泛型类型参数设置一个简写,我认为它应该与解构(而不是GraphQL选择集)相呼应。也许它可以看起来像这样。

type A = {
  B: {
    C: [
      {D: "E"}
    ]
  }
}

type X<{B: {C: {[infer D]}}} extends A> = D;
ruarlubt

ruarlubt2#

@harrysolovay
不错!
是的,这个想法在抽象上对我有很大的吸引力,只是不确定具体的实现细节。
像你和TS团队的研究员这样的人可以想出一些东西 :)

相关问题