TypeScript

JavaScriptを拡張してMicrosoftが開発したTypeScript。最近この言語がとても活躍しています。
教育用プログラミング言語としてよく使われるScratchですが、これの次には何を学んだらよいか、という選択にとても悩んだことがあります。
いろいろ悩みましたが教室ではIDEと一体化しているProcessing(簡易的なJava)を選びました。(構文等にくせがない)
最近もう少し用途の幅をひろげるために、フロントエンドでもバックエンドでも使えるTypeScriptがいいのではと思うようになりました。
※Processingを選ぶときにJavaScriptも候補になりましたが、クラスの記述方法などがちょっと気になりました。(最近のJavaScriptはちがうようですが・・) -> 下記 playcode.io 参照

TypeScriptはJavaに近いスタンダードな記述ができるので教育用にも使いやすいと思ったのと、JavaScriptの自由な記述を制限することで安全性をたかめることができるからです。
TypeScriptからJavaScriptへの変換は、一見効率が悪そうですが、ランタイムでも変換が可能なことから、JavaScriptバージョンの差異吸収や、ブラウザ互換を高めるためにもメリットがあります。
あとは開発環境ですが、最近はコーディングして実行結果すぐ確認できるPlayGroundというものが充実しているので、学習効率もあがります。
前々回の投稿「React.js / CodeSandbox」でも紹介

React.js / CodeSandbox

JavaScriptのPlayGround: https://playcode.io/new/

今回は、TypeScriptということで、https://www.typescriptlang.org/ を使ってみました。
これの特徴は、TypeScriptを変換したJavaScriptコードも併記されることです。これによりTypeScriptが様々なチェックをしていることがわかります。

ここではTypeScriptならではの特徴である、Interface、Union、関数の型表記について比べてみます。

Interfaceは、必ず必要な要素を定義します。定義しないとエラーになります。(例、age:18を削除)
Unionは、複数の型を定義するもので、それ以外の型をの値を代入するとエラーになります。(例、bに’dd’を代入)
関数の型表記についは、引数、戻り値について間違った型を代入できないようにするため、厳格に定義します。(JavaScriptに比べる記述が多め)
ここでは、複数入力、複数出力の例を挙げてみました。
PlayGroudでは、このようなエラーにするテストをテキスト編集しながらリアルタイムで確認できるので便利です。

実行結果

TyepScriptではエラーがでていますが、ここではJavaScriptのコードではエラーにならないため代入できています。
実際には、TypeScriptのコンパイルエラーがでた時点で、この処理をしないようにします。

Webの上で、動くということは、PC、スマホあらゆるもののアプリが作れます。またサーバサイドの開発にも活用でき、まさにオールマイティで使えます。
最近のプログラミング言語特徴として、安全のために記述の自由度に制約をかける傾向があります。プログラムミスが経済など様々な重大な損失を招くからです。
TypeScriptはまさにその用途のために使われています。
最初にScrachの例を挙げましたが、ビジュアルプログラミングは入門用ということで機能に違う意味の「制約」がありますが、これを逆手にとって、使う例もあります。

http://bitlife.me/bc/2022/01/29/

最新のブロックチェーンの開発環境で使われていることに驚きました。(GoogleBlocklyは、Scrach3のベースでもある)
どちらにしろ、これからの言語に安全性は欠かせない要素になってくるでしよう。