nyarn.tech

にゃーん

Revised Revised 型の国のTypeScript を読んだ

この記事はTypeScriptアドベントカレンダー11日目の記事です。

qiita.com

昨日は id:Tak_Yaz さんの がんばれやってけ TypeORM でした。 TypeORMを使っていて ムム となるポイントと、その対処法についての記事でした。

今日はとってもライトで、TypeScriptでこういうときどうしよう、がある人向けの記事です。

Revised Revised 型の国のTypeScriptについて

@vvakameさんが書いた本です。

f:id:asayamakk:20171211000609j:plain:w300

私は技術書展3で手に入れたのでRevisedが2つ付いています。

1日あれば十分に読み切れる量なのですが、この本にはTypeScriptのエッセンスが詰まっていると過言ではありません。

たとえばType Guardsを例にあげると、構造的部分型を使っているときの注意事項とその対策が書かれています。

class Human {
  name: string,
  age: number
}

let obj: Human = {
  name: "hoge",
  age: 20
}

if (obj instanceof Human) {
  console.log(obj)
}

export {}

一見すると obj instanceof Human はtrueを返しそうですが、実際はfalseです。 これはコンパイル後のjsコードを見ればよくわかります。

"use strict";
exports.__esModule = true;
var Human = /** @class */ (function () {
    function Human() {
    }
    return Human;
}());
var obj = {
    name: "hoge",
    age: 20
};
if (obj instanceof Human) {
    console.log(obj);
}

TypeScript上ではobjはHumanのように振る舞うことができるのですが、Humanのインスタンスではないのでfalseになってしまいます。 (じつは本読むまで知らなかった...)

また、JavaScriptという現行の実装に対してTypeScriptでの苦労みたいなものも垣間見る事ができます。 歴史ある JavaScriptのthisと Function.prototype.call などです。

また公式のドキュメントを読むだけでは伝わりにくい、実際の開発でのより良い実践方法などもふんだんに書かれていてとても最高です。
たとえば、 明示的な型を指定しない Tuple はできる限り避けたほうがいいとか、読んでいて納得が止まりませんでした。

本の終わりには

脳みそにイロハが刷り込まれ指先からコードがほとばしるようになったでしょうか

とあるのですが、本当にその通りで「よし!コードかくぞ!!TypeScriptこわくないぞ!!!」となります。
またvvakameさんの書き口調が個人的にはとても読み進めやすくてよかったです。

さらになんとこの本webでも閲覧が可能なのです。
私は本で一度通してよんで、ざっと頭に入れた後は読み返したいところがあれば電子版で検索する、みたいな使い方をしています。

みなさんもTypeScript in Definitelylandを読んで、コードを指先からほとばしらせましょう!!(そして25日までにカレンダー再挑戦したいですね)