Scala.js
よく見るアノテーション
code:scala
import scalajs.js
import js.annotation.*
されている前提の話
ScalaとJSの相互作用
JSにあるものをScalaから呼ぶ (ファサード)
Scalaからは真の実装は見えないが、Scalaで扱いたいので型らしきものが必要
真の実装はどっかのタイミングで注入される
NodeのAPIとか
外部のnpmライブラリとか
ScalaにあるものをJSから呼ぶ (エクスポート)
JSからは真の実装は見えないが、JSから呼びたいのでJSの言葉でexportして教えてやる必要がある
@js.native
JSにあるものをScalaから呼ぶときに必要
コイツの中身は実行環境が勝手に注入します、だからScala.jsでは実装してません、という意味
外部APIのファサードを書くときに出てくる
@JSGlobal
JSにあるものをScalaから呼ぶときに必要
コイツの居場所はJSのグローバルスコープだぜ、という意味
windowとかのファサードを建てるときに書く