ScalaとTypeScriptを交互に勉強していたら、なんか似てるなあと思ったので、そう思った理由らしきものを書いてみた。
[JS]とあるものは、TypeScriptがJavaScriptから受け継いだ特性です。
- 関数がファーストクラスオブジェクト[JS] *1
- 手続き型プログラミングと関数型プログラミングを併用できる[JS]
- 静的型チェックがある
- 型宣言が後置
- 型推論あり
- ラムダ式で関数作れる
もちろんこれ以外の視点で見れば全然違う言語だし、両者の型推論が同じレベルかというとそうでもなかったりもするんだろうけど、なんか書いてて雰囲気が似てるなあ、と思った次第。
「JSに型を付けた言語」と「Javaを関数型&スクリプトっぽくした言語」が似たような書き味に仕上がったのだとしたら、面白い話だなあ(小並感)
*1:なお、Scalaの「メソッド」はファーストクラスオブジェクトではないとのお話を id:nkgt_chkonk さんからいただきました。このへんの話らしい→ https://sites.google.com/site/scalajp/home/scala-pitfalls/method_neq_object