サーバレス練習帳

着眼大局着手小局

TypeScriptの読み方

この2日間でjavascript/node.js/elecctronに慣れてきたので、せっかくですからTypeScript(.ts)も読めるようになっておきたいですね。
私自身の勉強のために、気を付けるポイントは次の5点かなと思いました。

(1) きちんと型定義をする

qiita.com

let name: string; // name を文字列型として宣言
function getName(id: string): string {
    // なんか処理
    return "hoge";
}

delphi大好きな人なので、ここらへんはすんなり理解できました。

(2) インターフェースやクラスがつかえる

・・・といいつつ、delphi自体からよくわかっていなかったインターフェースについて再度勉強しました。
www.gixo.jp

長い引用となりますが、インターフェース・・・つまり呼び出し方をクラスをつく前から予め定義しておけるということだと理解足ました。なるほどー。

私「SampleClassAAAクラス」はインターフェース「SampleInterface」の中に宣言してあるメソッド(≒関数)を全て持つことを「約束」します!この場合SampleInterfaceにはdoSomethingメソッドが定義してあるので、私もdoSomethingメソッドを必ず持ちます!「約束」します!もしこの「約束」を破ったらエラーを起こします!

という事を意味しているのです。この「約束」がインターフェースの本質です。これを「メソッドの実装強制」といいます。

この「約束」は何の為?今はまだ存在しない「未来に作られるプログラムたち」の為の約束です
このインターフェースの約束は何のために存在するのでしょうか?約束をすることで何かいい事があるはずです。ここでは先に答えを述べます。

インターフェースによるメソッドの実装強制という約束をすることで、「今現在、存在するプログラム」が「今はまだ存在しない未来に作られるプログラム」を利用する事が出来るのです。

(3) アロー関数式

qiita.com

単に書き方が違うだけで、この2つは同じ挙動をします。

let normalFunc = function(x){
    console.log(x);
}

let arrowFunc = (y) => {
    console.log(y);
}

だたし、thisの扱いだけ注意。
通常のfunctionであれば、thisは呼び出し元のオブジェクトのことですので、呼び出したオブジェクトによってthisは変わります。
ですが、アロー関数式については、アロー関数式が定義された時点でthisを確定させてしまいます。
thisがあったときは要注意して読みましょう。

(4) null安全

qiita.com

null 安全 とは、一言で言えば、 null ( nil, None など)が原因で実行時エラーにならない仕組みです。
null に対してメソッドコールやメンバアクセスすると多くの言語では実行時エラーとなります。
一方、 null 安全 な言語では実行時ではなくコンパイル時(動的型付言語では静的解析時)にエラーとなります。プログラムが実行できないので、当然ながら null が原因で実行時エラーになることはありません。実行するためにはコードを修正する必要があります。

・・・ということで、コンパイル時に注意してくれるという話なので、これはそういう便利になったものと思っておいて良いでしょうね。

(5) ジェネリクスジェネリック

delphiでもジェネリクスを使っていたので、勘所はあります。
が、プログラムを読む上においては"< > "が出てきたらジェネリクスだなということだけ現時点では覚えておこうと思います。

class Iterator<T> { // <T> がジェネリックの宣言 Tは仮の名前


・・・という感じで、だいたい読めそうですね。私がいつも読みづらいなと思っているのはアロー関数式だけですので、まぁ、そのままfunctionだと思って読むことにします。


ちなみに、tscコマンドというのはtypescriptでコンパイルする命令だそうです。
https://qiita.com/Yanase-Takuma/items/44c4d164dc134d0af939
https://qiita.com/Yorinton/items/28c46333e9d4f714e09c