Closed17
「プロを目指す人のためのTypeScript入門」のメモ
1.1
- TypeScriptはマイクロソフトが開発している
- TypeScript = Javascrpit + 静的型付け
- version0.8が2012年にリリース.1.0は2014年.10年目ってところか
1.2
- TypeScriptコンパイラ
- TypeScriptのコードが書けたら実行.以下の2つを行う
- 型チェック
- トラスパイル
- TypeScriptのコードが書けたら実行.以下の2つを行う
- トラスパイルでTypeScrpitのコードをJavascriptのコードに書き換える.スゴっ
- JavaScriptに追従しないといけないのがデメリットになってしまう可能性はあるな
1.3
-
$ npx tsc
- tsconfig.jsonを読み込んでコンパイルを実行
- tscはTypeScript Compilerの略
- tsconfig.jsonで指定したディレクトリにコンパイル結果が生成される
- jsファイルが作成されていた
- 作成されたjsファイルはnode.jsで実行可能
- コンパイルとjsファイルの実行を自動でやってくれるライブラリ
- tsc-watch
- https://www.npmjs.com/package/tsc-watch
- TODO:後で試す
- tsc-watch
2.1
- TypeScriptはセミコロンで終わる
- (2.5.6コラム7より)行末であれば省略可能
2.3
- TypeScriptで数値はnumber型を使う
- number型には整数と少数の区別がない
-
const num = 8000;
はconst num = 8_000;
と_
を入れることが可能 - nullとundefinedがある
- 変数に型を指定していない場合は自動的に判定してくれる→型推論
2.4.6
-
x ?? y
でxがnullまたはundefinedの場合のみyを返す
const a = "OK";
console.log(5 ?? a);
console.log(null ?? a);
console.log(undefined ?? a);
// 出力
5
OK
OK
2.6 FizzBuzz
- 復習も兼ねて1.3.3〜1.3.4を見ながら初期で必要なコマンドを実行
まだ本で配列は出てきてないけど使ってみた
良さげな勉強サイトあった
M1 Macにしたので環境構築メモ(fish shell)
nodenvをインストール
$ brew install nodenv
$ nodenv -v
nodenv 1.4.0
パスを通す
~/.config/fish/config.fish
+ eval (nodenv init - | source)
本書と同じ16.8.0インストール
$ nodenv install 16.8.0
$ nodenv global 16.8.0
node -v
v16.8.0
3.1
- TypeScriptのオブジェクト=連想配列
- 書き方
const sample = {
number: 123,
string: "str"
}
console.log(sample.number); // 123
const sample = {
1: 123,
}
console.log(sample["1"]); // 123
- オブジェクトのコピーができるスプレット構文
const sample = {
number: 123,
string: "str"
}
const sample2 = {
...sample,
// あと勝ちになる
string: "overwrite"
}
console.log(sample2); // { number: 123, string: 'overwrite' }
- オブジェクトを代入するときの注意
const sample = {
number: 123
}
// 参照先が別々
const sample2 = {
...sample,
}
sample2.number = 5;
console.log(sample); // { number: 123 }
console.log(sample2); // { number: 5 }
const sample = {
number: 123
}
// 参照先が同じなのでsample.numberの値も変わる
const sample3 = sample;
sample3.number = 2;
console.log(sample); // { number: 2 }
console.log(sample3); // { number: 2 }
3.2
- 型付きの書き方
const x: {
a: number,
b: string
} = {
a: 123,
b: "str"
}
console.log(x); // { a: 123, b: 'str' }
- type文=型を宣言する文
type sampleObj = {
a: number;
b: string;
}
const y: sampleObj = {
a: 123,
b: "str"
}
console.log(y); // { a: 123, b: 'str' }
- ?をつけることでオプショナルなプロパティの宣言が可能
type sampleObj = {
a: number;
b: string;
c?: string;
}
const y: sampleObj = {
a: 123,
b: "str"
}
console.log(y); // { a: 123, b: 'str' }
console.log(y.c); // undefined
- 読み取り専用にするにはreadpnlyをつける
type sampleObj = {
readonly a: number;
}
const y: sampleObj = {
a: 123,
}
3.3
- 「3.3.3の余剰プロパティに対する型エラーについて」要チェック
3.4
- 3.4.3〜3.4.3 どうすればコンパイルを通るのか理解できず
3.5
-
配列に関しての部分
-
書き方
const arr: number[] = [-1, 0, 1, 2];
console.log(arr); // [ -1, 0, 1, 2 ]
// インデックスアクセスという.1の部分は必ず数値にしないといけない
console.log(arr[1]); // 0
-
配列でもスプレット構文の利用が可能
-
複数の型の配列の場合は,値の増減に対応できないが次のように書けた.
- タプル型という(tsでは配列の一種みたい)
- 調べてみると他にも色々方法はありそうだった
const arr: [number, string, number] = [-1, "str", 1];
console.log(arr); // [ -1, 'str', 1 ]
3.6
- 分割代入について
- オブジェクトから値を取り出して変数に代入するのを簡単に書ける
4.6.3
- コールバック関数が謎い...
途中からメモらなくなったけど最後まで到達
このスクラップは2022/07/18にクローズされました