基本の型
boolen
単純に true か false が入れられる型
let flg:boolean = true;
flg = false;
number
10進数、2進数、8進数、16進数が格納できる。
let no:number = 9;
no = 0xFFFF00;//16進数
no = 0o273;//8進数
no = 0b10001;//2進数
no = 9.2; //小数点
// NaN、Infinityも代入できる
no = NaN;
no = Infinity;
no = 2_000_000;//「_」で区切ってもエラーにはならない
String
文字列型を格納。
let str:string = '文字列';
str = `テンプレート文字列もOK${str}`;
Array
長さが決まっていない配列の定義。連想配列も定義できる。
- string[] : 配列の定義方法1、型の後に[]をつける
- Array<string>:配列の定義方法2、Arrayに型を渡す
- string[][]:多次元配列の定義
- { [key: string]: string;}:連想配列の定義
// 文字列型の配列を定義する
let arr:string[] = ['aaa','bbb','ccc'];
let arr2:Array<String> = ['aaa','bbb','ccc'];
// 多次元配列
let arr3:string[][] = [['AAA'],['BBB','CCC'],['DDD']];
// 連想配列
let arr4: { [key: string]: string;} = {
'aaa':'AAA',
'bbb':'BBB',
'ccc':'CCC',
// 'aaa':'AAA',//同じキーを定義しようとするとエラー
};
//データの追加、記述方法はどっちでもOK
arr4['ddd'] = 'DDD';
arr4.eee = 'EEE';
Tuple(タプル)
長さと型の順番が決まっている配列を定義。 配列内に異なる型を指定することができる。
// タプル型の宣言
// 文字列、数値の順番の配列を定義
let tuple: [string, number] = ['文字列',5];
console.log(tuple[0]);// 文字列
console.log(tuple[1]);// 5
// 文字列、数値の配列、ブーリアンの配列
let tuple2 : [string , number[], boolean] = ['文字', [2 ,3] , true];
console.log(tuple2[1]); //[ 2, 3 ]
enum
列挙型の定義
//数値の列挙型の定義
//Months.JANには0が格納され、インクリメントされていく
enum Months {
JAN ,
FEB,
MAR,
};
//値は0から順番に割り当てられる
console.log(Months.FEB);
//1
console.log(Months[2]);//添え字に数値を渡すと名前を取得できる
//MAR
//1からの始まりしたいときは最初だけ初期化する
enum Months2 {
JAN = 1,
FEB,
MAR,
};
// 文字列型のenum
// 明示的に値に文字列を追加する
enum COLORS {
BLACK = '黒',
RED = '赤',
WHITE = '白',
}
// 後で追加する
enum COLORS {
BLUE = '黒',
}
// 同じ名前を追加すると重複エラーになる
// enum COLORS {
// BLUE = '黒',
// }
any
型を指定しないのでコンパイルでエラー検出されない。
let test:any = 23;
test = '文字';
test = [25,'文字列'];
test = true;
// コンパイル時はエラーにならないが、実行時にエラーになる
console.log(test[1].toLowerCase());
unkonown
anyと同じく何でも入れられる型。 使用するときはtypeofで型を判断して使用しないとコンパイルエラーとなる
let no:unknown=2;
// no++;// そのまま使うとエラーになる
// typeofで型を判断してから処理を書く
if(typeof no === 'number'){
let sum:number = no + 10;
}
null、undefined
変数にnull、undefinedが格納できる。
let n:null = null;
let u:undefined = undefined;
// 文字列かundefinedが格納できる変数を定義
let str:string|undefined = '文字列';
str = undefined;
オブジェクト型
オブジェクトを格納する変数を定義する。 オブジェクトが持つプロパティ名、型まで定義することができる。 インターフェースを使うほうがメジャーなのかな?
//どんなオブジェクトでも入れられる型
let obj:object;
//プロパティまで指定する型
let obj2:{name:string} =
{
name:"名前",
};
void、never
- void:戻り値がない関数(関数の予備元にもどる)
- never:例外発生関数など予備もとに戻らない関数の型
// 戻り値を返さない関数
function func():void{
console.log('ログ出力など');
}
// 例外発生により予備もとに戻らない関数
function func2():never{
throw new Error("エラーになりました");
}