【发布时间】:2018-05-30 03:59:59
【问题描述】:
有没有一种技术可以让我在 GraphQL 中像这样声明 ADT?
// TypeScript
type SomeAlgebraicDataType =
| { state: 'A', subState1: string }
| { state: 'B', subState2: string, subState3: number }
| { state: 'C', subState4: string, subState5: string, subState6: number }
注意如何基于state 鉴别器,推断结构的其余部分。
这里有一些伪代码来说明这个想法:
union AlgebraicDataType = StateA | StateB | StateC
type StateA {state: StateDiscriminator.A, subState1: String }
type StateB {state: StateDiscriminator.B, subState2: String, subState3: Int }
type StateC {state: StateDiscriminator.C, subState4: String, subState5: String, subState6: Int}
enum StateDiscriminator { A B C }
【问题讨论】:
标签: graphql graphql-js algebraic-data-types