0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TypeScriptのコアな型一覧

Last updated at Posted at 2024-02-07

number型

数値。整数・少数・浮動小数点などを含む。

例:1, 5.3, -10

string型

全ての文字列。クォーテーション、グレイヴ・アクセントによって括られる。
グレイヴ・アクセントはテンプレートリテラルを用いる場合に使用される。

例:'Hello', "Hello", `Hello`

boolean型

trueかfalseのどちらか。

Object型

JavaScriptの全てのObject。
中身の型の指定が細かくできる。
型推論ができている場合、あえて明示的に書く必要はない。

    const person: {
        name: string;
        age: number;
    } = {
        name: 'Yuki',
        age: 28
    };

Object型はネストさせることもできる。

    const list: {
        kirby: {
            ability: string;
        }
    } = {
        kirby: {
            ability: 'eat'
        }
    };

Array型

JavaScriptの全てのArray。
要素の数、各要素の型は柔軟に対応できる。

const hobbies: string[] = ['Sports', 'Reading'];
const numbers: number[] = [5, 10, 2.5];

Tuple型

Array型の一つ。要素の数が固定された配列。
異なる長さの配列が代入されること、指定の順番の要素に異なる型の値が代入されることを防ぐ。

注意として、array.push()による値の追加など、
メソッドによる要素の追加、削除等はエラーとして検知できない。

const role: [number, string] = [2, 'author'];

role[0] = 'two'; // number型以外を指定できないためエラー。
role[2] = 'library'; // 配列の要素は2つで固定されているためエラー。

role.push('library'); // 要素を追加できてしまう。

Enum型

名前が付いた定数の集まり。列挙型とも言う。
定数の一覧を、カスタム型を利用して定義する。

enum Role {
    ADMIN,
    READ_ONLY,
    AUTHOR
}

const person = {
    name: 'Yuki',
    age: 29,
    role: Role.ADMIN
};

冗長な書き方をすると以下のようになる。これらはEnum型での定義が望ましい。

// それぞれを定数で定義する。
const ADMIN = 0;
const READ_ONLY = 1;
const AUTHOR = 2;

const person = {
    name: 'Yuki',
    age: 29,
    role: ADMIN
};

TypeScriptからコンパイルされたJavaScriptには、以下のように記述される。

let Role;

(function (Role) {
    Role[Role["ADMIN"] = 0] = "ADMIN";
    Role[Role["READ_ONLY"] = 1] = "READ_ONLY";
    Role[Role["AUTHOR"] = 2] = "AUTHOR";
})(Role || (Role = {}));

any型

一番柔軟な型。どんな型の値を入れてもエラーにならない。
エラーの元になるため、基本的には指定することはない。型推論か型指定を行う。

その他

コアな型ではないが、上で紹介したコアな型を用いて定義できる型がいくつか存在する。

Union型

指定した複数の型を受け取ることができる型。

// 変数に複数の型を定義する
let value: string | number;

// 引数としてstring型、もしくはnumber型を受け取ることができるようになる
const combine = (item: string | number) => {
    if (typeof item === 'number') {
        return item.toString();
    } else {
        return item;
    }
};

combine(1);
combine('Max');

Literal型

呼び出し元で特定の文字列を呼び出して欲しい場合に定義する型。

// 'ADMIN'もしくは'USER'という文字列のみを引数で受け取ってほしい。
// 2つの値以外が入ってくることを想定しない。
const pushResult = (value: 'ADMIN' | 'USER') => {
    ....;
};

カスタム型/型エイリアス

自分で型を定義できる。関数や変数よりも先に宣言する。
stringのような既にある型の名前は命名に使用できない。
typeを用いる。

type custom = string | number;

// 引数の型定義にcustomを使用する
const combine = (item: custom) => {
    ....;
};
0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?