Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScript の便利な型変形を なんとかして Scala.js で使う / Emulating TypeScript Utility Types in ScalaJS

TypeScript の便利な型変形を なんとかして Scala.js で使う / Emulating TypeScript Utility Types in ScalaJS

TATSUNO Yasuhiro

April 17, 2020
Tweet

More Decks by TATSUNO Yasuhiro

Other Decks in Programming

Transcript

  1. そこで静的型付け Alt-JS (JS 代替言語) Haskell Elm OCaml Reason F# Fable

    Scala Scala.js 使い慣れた言語、ツールセットで、 JS をターゲットに開発できます 元言語: Alt-JS:
  2. 型システムなど Scala 言語機能が使える • パターンマッチ • for内包表記 • 既存の型に安全にメソッドを追加 •

    継承関係がなくても型が満たすべき制約を書ける(型クラス) • マクロでコードを自動生成(型プロバイダーなど) Scala ライブラリがけっこう使える Scala 対応 IDE/エディタで快適に開発 Scala.js ⇔ JS 相互呼出できる Scala.js の特徴
  3. JS コードを型安全に呼ぶには 開発では様々な外部の JS コードを使う • ランタイムの API: Web ブラウザ、Node.js…

    • フレームワーク: React、Vue、Angular … • 開発キット: Google Apps Script、Kintone、AWS… 幸い、Alt-JS 言語には、こうした外部の JS に型定義 をつけて、型安全に呼び出せる仕組みが結構ある
  4. 3. Pick<T, K> T から プロパティ K だけ残した型を作る 使用箇所 title

    と completed は 元の Todo から引き継いでる リテラル型(プロパティ名) のユニオン型
  5. 戦略 Scala 2 には型変形 / Mapped Type 相当はないが… マクロで AST

    を変形して型にプロパティを追加し たり、新しい型を生成したりできる !! Scala マクロ作る勉強のネタにやってみよう !!