要实现类似GraphQL的类型查询,可以使用类似于Pick<Type, 'a' | 'b' | 'c'>的语法。这种语法可以用于选择具有相似属性的类型。例如,
prop: AType[{a, b, c: { d }]
等价于
prop: Pick<AType, 'a' | 'b'> & {c: Pick<AType['c'], 'd'>}
。在实际应用中,这种语法的使用频率取决于具体情况。
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;
ruarlubt2#
@harrysolovay不错!是的,这个想法在抽象上对我有很大的吸引力,只是不确定具体的实现细节。像你和TS团队的研究员这样的人可以想出一些东西 :)
2条答案
按热度按时间kx5bkwkv1#
我喜欢这个想法。虽然我相信这已经存在了(某种程度上)。
Playground链接
如果要为泛型类型参数设置一个简写,我认为它应该与解构(而不是GraphQL选择集)相呼应。也许它可以看起来像这样。
ruarlubt2#
@harrysolovay
不错!
是的,这个想法在抽象上对我有很大的吸引力,只是不确定具体的实现细节。
像你和TS团队的研究员这样的人可以想出一些东西 :)