プロを目指す人のためのTypeScript入門 読書メモ① 第1~2章
■思ったこと
JavaScriptすっ飛ばしていきなりTypeScriptやる人も読んで良いよ♪と書いてあったのでこちらの書籍にいたしました。本を読むために本を読む、おれはまるで人間ネスト構文・・!
■ 第1章 イントロダクション
TypeScriptとJavaScriptの違いって
- TypeScriptは型注釈を書けるのがJavaScriptとの大きな違い、型チェックは静的に行われる(実行前にエラーがあると赤くなるよね)
- そんで、型情報は型チェックのためだけに利用される。だからコンパイル後にJavaScriptに変換されてもなんの問題もないわけだ
- 結局実行時はJavaScriptなるので、TypeScriptは実装するときに安全ってのが使う意味
- tsからjsへの変換はトランスパイルという。変換を簡単に言うと型注釈を取り除くこと
ECMAScript
- JavaScriptのもう一つの名、が、もっぱら言語仕様の意味で使われる
- ECMAScript仕様書によって言語仕様が定義されている
- 調べると日本語訳してくださっているサイトがあります、これはすごい量!!そしていきなり読むには難しい! xn--ecmascript2020-tt9vf572amitfjlc.com
■ 第2章 基本的な文法・基本的な型
君は文と式の違いを感じたことがあるか
- TypeScriptのプログラムは文を並べていくことで作られている!TypeScriptの文は;(セミコロン)で終わるよ
- 式は文の中に現れる
- 例えば
const text = "hoge";
は文だけど、"hoge"
の部分は「hoge」という文字列を作り出している、文字列リテラルという式なのだ(この感覚、ムジ~!) const 変数名 = 式;
で覚えよう- 文と式の違いは、結果があるかどうか!
- 式の後にセミコロンを書く文は式文というらしい。特に結果もなく、与えられた式を実行させるだけのヤツ
変数
- constは再代入不可、letは再代入OKだし初期値入れなくても良い
- constって定数のイメージだけど、TypeScriptの場合はあくまで変数とみるのが主流なんだって
- letは中身を追うのに読む側の負担があるため、極力使わないでほしいという思い
- そうするとletが使われるのはループ処理とかがほとんど
値っていうけど
- 値はプログラムで扱うデータのこと
- TypeScriptでいう値はほとんどプリミティブで構成される
プリミティブ?誰よその女!!
- TypeScriptの値はプリミティブとオブジェクトに分けられる
- プリミティブでググると「原始的な(もの)、根源的な(もの)」って出るように、それ以上分解できない値のこと
- プリミティブに含まれる値は文字列、数値、真偽値、BigInt、null、undifined、シンボルの七種類
- シンボルはあまり使わないのでここでの紹介はカッツ・アイ
数値型
- 正数も少数もひっくるめてnumber型、いいじゃねえか…
リテラル
- 何らかの値を生み出すための式のこと
数値リテラル
- 結果が数値になる式のこと
BigInt
- ES2020で追加された新キャラ、まだまだnumberが主流だけど、今後のために覚えておこう
- 任意精度の正数をを表す、要するに誤差のない正確な正数!
- しかし、計算速度はnumberのほうが高速なので、使いどころは限られる?
- BigIntリテラルは正数の後に「n」を書けばOK
- 整数のみなので、小数点とかあると丸められちゃうよ
文字列
- 「""」でも「''」のどっち使っても良かったんだって、そうだったのか…だいたい統一されてるから知らなかった!
- 改行するなら「/n」
テンプレートリテラル
const hoge: string = `hoge\nhoge hoge`; console.log(hoge); //[console] // hoge // hoge // hoge
- ES2015で追加されたので比較的新しい書き方なんだって、なんか納得!
- 変数を
${式}
で使える書き方はテンプレートリテラル特有の機能だった!式の定義は覚えているか?例えばconst text: string = "hoge"
だったら${text}
となるわけだけど、textってイコール"hoge"だよね、これって文字列リテラル、式が入ってるんです!結果として、文字列「hoge」が表示される - もっと分かりやすくすると、${1+1}だったら2が表示される、馴染みやすい式!
真偽値(boolean)
- 真偽値リテラルとしてはtrueとfalseの二種類だけ
nullとundefined
- どっちもデータがないことを表すが、使うのはundefined推奨・・サポートが手厚いから!
演算子
算術演算子
- 二項演算子
- 二つの式をつないで新たな式を作る
- 単項演算子
- 一つの式に付与して新たな式を作る
-式
とか、小技だけど+文字列
ってやると数値に変換できる。私も筆者さんと同じくNumber(文字列)
派だ
- 比較演算子
- 式の比較を行う
- 等価演算子
- 一致判定を行う
- 「===」で一致を判定しよう!「==」は暗黙の型変換してくれるおかげでちょっと微妙
- 「===」はオペランドの型が違えば即、false!!
- ただし、
x == null
に限っては、同時にundefinedのチェックもしてくれるから場合によっては使ってもいいかも
- 論理演算子
- 条件演算子(三項演算子)
- これがこれならコレ、違うならソレ
- if分と違って式、短絡評価だよ
- 代入演算子
■感想
やっぱ基本の勉強大事すぎる・・式の話知らなすぎた!TypeScriptの年表がゲームのリリースノートみたいでおもしろかった、みんなゲームの大型アプデ並みに喜んだろうな!