【发布时间】:2016-01-05 03:49:14
【问题描述】:
我想从 ScalaJS 调用一个类似于以下的 JS 函数:
function parseExpression(s){
if(isNumber(s)) return {lit:s}
else{
return {
left : leftOp(s)
oper : operand(s)
right: rightOp(s)
}
}
}
返回的对象可以是两种不同的形状,{lit} 或 {left, oper, right}
我在 ScalaJS 中定义了以下特征:
@js.native
trait NumLiteral extends js.Object{
val lit:String = js.native
}
@js.native
trait NumOper extends js.Object{
val left : NumLiteral | NumOper = js.native
val oper : String = js.native
val right: NumLiteral | NumOper = js.native
}
然后我可以将函数parseExpression 声明为Function1[String, NumLiteral | NumOper]
检查parseExpression(someExpressionString) 的返回值是NumLiteral 还是NumOper 类型的最佳方法是什么?我可以随意更改 JS 和/或 Scala 代码以实现最优雅的解决方案。
【问题讨论】:
标签: scala.js