雑多なブログ

音楽や語学、プログラム関連の話題について書いています

Typescript: 型

2022年5月2日更新

最近改めてTypescriptの型について学んだので、過去に記述した内容のアップデートも含めて今回記事の更新を行なった。

型の定義

型の指定は次の形式で記述する。

const 変数名: データ型
let : データ型

プリミティブ型

代表的なプリミティブ型は次の通り。

型名
string let name: string = 'Hello Typescript'
number let value: number = 99
boolean let isChecked: boolean = true
const isVisible: boolean = false
null let value: null = null
undefined let value: undefined = undefined

Array

配列の要素の型を指定し、後ろに角かっこを付ける。

// 要素がnumber の配列
let aryValue: number[] = [1, 2, 3, 4]
// 要素が string の配列
let strValue: string[] = ['hello', 'Typescript']

二次元配列もこの通り。

let aryValue: number[][] = [
    [1, 2, 3, 4],
    [5, 6, 7, 8]
]

tuple

一見して配列のようにも見えるが、順序と個々の要素の型が決まっている。

let tupValue: [number, string]  = [22, 'Hello Tuple']

// これは型指定の順序と値の代入の順序が異なるためエラーとなる
let tupValue: [number, string]  = ['Hello Tuple', 22]

object

オブジェクトを示す型は objectで基本的な定義方法は次の通り。

const user: object = {
    name: 'Tarou',
    age: 25
}
// こちらでもOK
const user2: {} = {
    name: 'Jirou',
    age: 33
}

オブジェクトのプロパティの型を指定することもできる。

const user3: {
    name: string,
    age: number
} = {
    name: 'Saburou',
    age: 18
}

any

any型はなんでも受けいれてしまうため、Typescriptを使うメリットが活かせない。
基本的には使わない方が良いが、APIリクエストのレスポンスなど、
型の指定が難しい場合に、明確な意図を持って使用すべき型だと思う。

let value: any = 1
value = 'string_value'
value = {"key": "value"}

null と undefined

定義方法は他の型と同じ。

let nullValue: null = null

デフォルトでは、この2つの値はどういった型の変数にも代入でき、
以下のような代入が可能となっている。

let hoge: string = 'hello'
hoge = null
hoge = undefined

strictNullChecks : true

コンパイル時のオプション strictNullChecks : true を指定すると、
上記のような代入はエラーになる。

変数にnullやundefinedが代入される場合は、次のようにユニオン型の型注釈で表現する事ができる。

let hoge: string | null = 'hello'
hoge = null

never

never型は下記に該当する関数の戻り値に指定できる。

  • 絶対にreturnされない関数
  • 例外 throw する関数
function neverReturn(): never {
    throw new Error('もどりません')
}
neverReturn()