假设我有以下 typedef:
interface Node {
id: ID!
}
type Foo implements Node {
id: ID!
quantity: Int
}
type Bar implements Node {
id: ID!
name: String
}
我发出的每个 ID,我都想以同样的方式处理。目前我需要一些解析器,例如:
{
// ...
Foo: {
id: (root) => encodeId(root.id, root.type),
// ...
},
Bar: {
id: (root) => encodeId(root.id, root.type),
// ...
},
// ...
}
由于实现了许多类型Node
,这会导致大量代码重复,并且开发人员很容易忘记编码 id 的正确方法,或者忘记将它们全部编码在一起。
有没有办法做这样的事情?
{
// ...
Node: {
__resolveType: (root) => root.type,
id: (root) => encodeId(root.id, root.type)
},
// ...
}
这样Foo
,Bar
以及任何其他实现Node
将继承id
解析器?