2016-04-22 6 views
2

が、私はそうScalaJSでコンパニオンオブジェクトメソッドをエクスポートしますか? ScalaJSを使用している場合

@JSExport object Thing { 
    @JSExport def doThing(x:Int) = x * 2 
} 

しかしコンパニオンオブジェクトを作成するときのようにオブジェクトとすべてのメンバーをエクスポートすることができ、ScalaJSはもはやメソッドをエクスポートする表示されません。この例では

@JSExport @JSExportAll case class Thing(x:Int) 

@JSExport object Thing { 
    @JSExport def fromNumber(x:Int) = Thing(x) 
} 

私は今、私はThing(n)を呼び出してインスタンス化することができますが、利用可能な任意の方法Thing.fromNumberがあるように表示されませんJavascriptのクラスを持っています。

これはScalaJSで可能ですか?

(注:現在 "スカラ座2.11.8" と「SBT 0.13.9で "ScalaJS 0.6.8" を使用して):(余分な括弧に注意してください

Thing().fromNumber(...) 

答えて

0

すると、このようにそれを呼び出します「シング」の背後にある)

+0

残念ながら 'Thing()'は、ケースクラスコンストラクタを参照しています。 –

0

あなたはそれをエクスポートする際に、別のオブジェクト名をコンパニオンを与える必要があります。

@JSExport @JSExportAll case class Thing(x:Int) 

@JSExport("ThingOps") 
object Thing { 
    @JSExport def fromNumber(x:Int) = Thing(x) 
} 

今度はThingOps().fromNumber(1)と呼んでください。

あなたが求めているのは、静的メソッドです。 Scala.jsは現在これらをサポートしていません(#1902参照)。

関連する問題