使用scala.js匿名类中的javascript库进行问题

时间:2015-11-15 19:42:38

标签: scala scala.js

我正在尝试使用this中的my scala.js app javascript库(简化的可运行示例)。

我可以成功使用api的某些部分,但是对于其他部分,我无法确定Scala外观的正确类型签名。

例如,如果javascript函数返回{ text: 'June 5th 1998', ... },我可以定义scala.js类来表示函数,并且以下成功:

class Value extends js.Object {
  def date(): js.Dictionary[Int] = js.native
}

object nlp extends js.Object {
  def sentences(text: String): js.Array[Sentence] = js.native
  def value(text: String): Value = js.native
}

nlp.value("I married April on June 6th 1998.").date()

但是如果javascript返回相同的数组(例如[{ text: ...}, { text: ...}]),或者即使它返回一个简单的String(例如"June 5th and June 6th",因为以下编译但是运气不好在运行时失败Uncaught TypeError: arg1$4.text is not a function

class Sentence extends js.Object {
  def text(): String = js.native
  def values(): js.Array[Value] = js.native
}
val sentences = nlp.sentences(splittableText)
sentences.map( sentence => sentence.values() )
// Or `sentences.map( sentence => sentence.text() )`

如何使用scala.js中的这个javascript api?

非常感谢您一起来看看。

1 个答案:

答案 0 :(得分:1)

textsentences返回的对象中的属性(或字段)。这不是一种方法。因此,您必须将其声明为def,而不是()

def text: String = js.native