TypeScriptとは
JavaScriptにコンパイルされる、静的型システムがついた、JavaScriptの上位集合
なぜTypeScriptか?(なぜTypeScriptしか勝たんのか?)
・ドキュメントとしての側面を利用するため
変数の型とか引数の情報を教えるため、書けなくてもドキュメントを読めて開発効率上がる
・Linterとしての側面を利用するため
ESlintはコロンとかチェックできるけど変数の型は無理。TSはそれができる。強みが違うから共存して生きていくっ!
・ES5へのコンパイラとしての側面を利用するため
any型は使うな!TypeScriptはもうお手上げって思っちゃうから。
void型:何も返さない
watchモード
tsファイルを自動的にjsファイルへコンパイルする。「tsc index.ts —watch(-w)」
tsc —initとtscコマンド
tsc —initでコンパイル設定用tsconfig.jsonが生まれる。その後にtsc叩くと一括コンパイルできる
constructor
予約語?初期化、最初の処理
publicとprotectedとprivate(こいつらはES6じゃなくてTypeScript。要は、よそ者)
・public
誰でもどこからでもおk。何でも良い。ガバガバ。ガバマン
(readonlyはどこでも使える)
・protected
継承先からなら良いよ〜。ちょっとお硬いけど実は柔軟なやつ。
・private
絶対このクラスからしか通さん。このクラスしか勝たん。
abstract
継承用クラスだよ!って宣言するTypeScriptのメソッド。ES6はゆるいから厳格に決める。ちなabstractにするとインスタンスが作成できない(staticはおk)
interfaceとは
オブジェクトのみのタイプエイリアス
Nullish Coalescing(三項演算子のTypeScriptバージョンみたいな)
const userData = downloadedData.user ?? "no-user"; // undifとnullだけ右側が反応する
オプショナルプロパティとは
語尾に「?」をつけることで、あってもなくてもokになる。
デコレーター
クラスを受け取ってデコレーションする。ただの関数。「@」から始まるよ。クラスの定義時に発火する。