如何指定FilterConditions
的成员Query
的类型,从而将BoolExpr
限制为Expr
?
type Expr =
| BoolExpr of Expr
| ConstValue of Object
| FieldAccess of string
type Query = {
SelectList: Expr list
FilterConditions: Expr.BoolExpr list // Expr.BoolExpr - this is don't valid? why?
}
我希望仅限BoolExpr
Expr
的限制类型的FilterConditions。可能吗?或者我必须重新设计AST的结构?...
答案 0 :(得分:2)
联合类型的目的是提供对不同类型的统一访问。 知道了,根据您的分析,您有几个选择:
如果你真的觉得有一个案例有自己的生命,你可以为它创建一个类型并将其包装在联合案例中
您可以在使用Query类型的函数中进行模式匹配,并对参数使用统一的Expr类型。在这种情况下,这似乎是件好事。