我正在尝试使用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?
非常感谢您一起来看看。
答案 0 :(得分:1)
text
是sentences
返回的对象中的属性(或字段)。这不是一种方法。因此,您必须将其声明为def
,而不是()
:
def text: String = js.native