はじめに
TypeSctipt勉強中の👶です。
理解を深めるために日々の学びを記事にしています。
初心者の記事なので言い回しや記載に誤りがあるかも知れませんが、暖かく見守っていただけると幸いです。
まだ学習半ばなので、学習進めていく上でこの記事も工事🚧するかもしれません。
(よろしければ間違いをコメントいただけると学び、励みになります!)
学んだこと
- 静的型付け言語とは
- プリミティブ型
- リテラル型
- any型
- ユニオン型
TypeScriptは静的型付け言語
動的型付け言語けは実行時に初めて決まります。
対して、静的型付け言語はコンパイル時にエラーで出力されるので、おかしな代入をしていたり、変数名を誤字っていたりすると早期発見できます。型定義でバグを事前に防げる点から、型安全性と呼ばれTypeScriptの利点によく挙げられます。
変数宣言
型を指定することを型注釈(type annotation; 型アノテーション)といいます。
const 変数: 型 = 式;
プリミティブ型
const text: string = "abc";
const num: number = 111;
const isPanda: boolean = true;
const x: null = null;
const y: undefind = undefind;
const bignum: bigint = 9007199254740992n;
const sym: Symbol = Symbol();
BigInt型 (補足)
- 任意精度の整数が対象。小数などは使用不可。
- 大きな整数値を表したい時に使用できる。
-
number型
と併用が不可。 -
number型
より処理が重い。 - 比較的新しい機能で古いブラウザで利用できない。
シンボル型 (補足)
シンボルとは、一意性を示す値のことです。
下記の場合、同じstring型
の"foo"
という値が入っているが、s1
とs2
で定義が異なるのでシンボル値の比較s1===s2
はfalse
を返します(型は一緒、値が違う)。
const s1: symbol = Symbol("foo");
const s2: symbol = Symbol("foo");
console.log(s1 === s1); //=> true
console.log(s1 === s2); //=> false
リテラル型
特定の値だけを代入可能にする型。
// true以外が代入されるとエラーになる
const isTrue: true = true;
const isTrue: true = false; // =>エラー
// 数値の123以外が代入されるとエラーになる
let num: 123 = 123;
num = 55; //=>エラー
型推論
型注釈を省略しても勝手に解釈してくれます。型推論できない場合は、any型
が付与されます(後述)。
const str = "foo"; // =>’foo’型と推論される
let str = "bar"; // =>string型と推論される
ユニオン型
2つ以上の型を定義したいときに使用します。|
を or みたいなニュアンスで使用できるんですね。
let numberOrUndefined: number | undefined;
any型
どんな型でも代入できる型。コンパイラーの型チェックから外れます。
文字列型の値に対して数値型のメソッドを使用する、など明らかな矛盾以外はコンパイラーが警告しなくなります。
型を省略して、コンテキストから型推論できない場合も暗黙的に型をanyとして扱います。any型をチェックしたい場合、tsconfig.json
にて noImplicitAny: true
を設定することで、TypeScriptが型をany型と推測した場合にエラーが発生するようになります。
参考
下記を参考に勉強させていただきました🌱
TypeScriptの型入門 - Qiita
TypeScript入門『サバイバルTypeScript』〜実務で使うなら最低限ここだけはおさえておきたいこと〜