TypeSceipt学習。
基礎の基礎から。
変数に型をつける
コロンの後に型を指定する。
const stringTest:string = 'aaa'
const numberTest:number = 123
const isValid:boolean = true
配列に型をつける
配列に型をつけるパターンは3つ。
①配列の中の型が全て同じ
②ユニオン型(型が複数あっていずれか)
③タプル型(順番をつけて順番通りに設定)
const arrayTest1:string[] = ['aaa', 'bbb']
arrayTest1.push('ccc')
//ユニオン型
// 文字か数字が入る
const arrayTest2:(string | number)[] = ['aaa', 123]
arrayTest2.push(456)
//タプル型
// 指定した順番通りに入れないとエラー
const arrayTest3: [string, number, boolean] = ['aaa', 123, true]
関数に型をつける
引数(インプット)と戻り値に型をつける。戻り値がない場合はvoidとつける。
const arrowFuncTest = (str: string, int: number) : void => {
console.log(`文字は${str}、値は${int}`)
}
arrowFuncTest('aaa', 123)
オプション引数
渡す引数を省略できる。
//引数省略
const funcTestQ = (str: string, int? : number) : void => {
console.log(str, int)
}
funcTestQ('HELLO')
// int引数を渡してないがエラーにならない
// HELLO undefined
エラーにはならないが何も渡ってこないため結果はundefinedとなる。
つまりオプション引数の型は、型とundefinedのユニオン型となる。
オプション引数は、型がundefinedとのユニオン型になるため、そのままでは使えないため、多くの場合はデフォルト値を設定する。
// デフォルト値指定
const funcTestE = (str: string, upper: boolean = false) => {
if (upper) {
return str.toUpperCase();
} else {
return str.toLowerCase();
}
}
console.log(funcTestE('hello'))
// hello
【その他】基本の型
any型
型チェックを無効化するため、any型に入った値に対しては、コンパイルエラーが発生しない。
つまり、any型にはなんでも入れられるため、ランタイムエラーが発生する可能性が高い。
→typeScriptの意味がなくなるので、極力使用しない
unknown型
anyと同じでなんでも入れられる型。中に何が入っているかわからない。
anyとの違いは、「中身が不明」なのでできることが限られている。(val.nameのようなアクセスができない)
→unkouwnの使用方法は基本的にはtypeof演算子による型の絞り込みを行う。
bitint型
number型で扱えないような大きな数値でも誤差なく表示ができる
c.sakyou