从 Scala.js 优雅地调用 js.ThisFunction
Calling a js.ThisFunction elegantly from Scala.js
TypeScript
对 mapbox-gl-js 的定义指定 loaded
方法 Map
class return一个boolean
loaded():boolean //def loaded:Boolean = js.native in Scala.js
但是,该方法实际上 return 是以下 JavaScript 函数,后者又 return 是 boolean
预期。
function(){
return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()
}
这让我将其 return 类型更改为 js.ThisFunction
,
def loaded: js.ThisFunction = js.native
,用名为 map
Map
class 的当前实例调用它, 然后将得到的 js.Dynamic
转换为 Boolean
,
map.loaded.call(map).asInstanceOf[Boolean] //Passing in map as the execution context (this)
它有效,尽管很麻烦。有什么办法优雅地做到这一点?谢谢!
无论实现如何,我都建议将方法定义为
def loaded(): Boolean = js.native
首先。然后你可以称它为
map.loaded()
如果你真的想让 ThisFunction
显式化,你至少应该使用类型化的:
def loaded: js.ThisFunction0[Map, Boolean] = js.native
然后你可以称它为
map.loaded(map)
TypeScript
对 mapbox-gl-js 的定义指定 loaded
方法 Map
class return一个boolean
loaded():boolean //def loaded:Boolean = js.native in Scala.js
但是,该方法实际上 return 是以下 JavaScript 函数,后者又 return 是 boolean
预期。
function(){
return !this._styleDirty&&!this._sourcesDirty&&!!this.style&&this.style.loaded()
}
这让我将其 return 类型更改为 js.ThisFunction
,
def loaded: js.ThisFunction = js.native
,用名为 map
Map
class 的当前实例调用它, 然后将得到的 js.Dynamic
转换为 Boolean
,
map.loaded.call(map).asInstanceOf[Boolean] //Passing in map as the execution context (this)
它有效,尽管很麻烦。有什么办法优雅地做到这一点?谢谢!
无论实现如何,我都建议将方法定义为
def loaded(): Boolean = js.native
首先。然后你可以称它为
map.loaded()
如果你真的想让 ThisFunction
显式化,你至少应该使用类型化的:
def loaded: js.ThisFunction0[Map, Boolean] = js.native
然后你可以称它为
map.loaded(map)