🤖

【TypeScript基礎①】型まとめ

2025/01/22に公開

TypeScriptの型について

TypeScriptの型にはプリミティブ型オブジェクト型がある

プリミティブ型

TypeScriptにおける基本的な型

説明
boolean trueまたはfalseの真偽値
number 0や0.1のような数値
string "Hello World"のような文字列
undefined 値が未定義であることを表す値
null 値がないことを表す値
symbol 一意で不変の値
bigint number型では扱えない大きな整数型
undefinedとnullの違い

表示したい内容

オブジェクト型

TypeScriptにおける、プリミティブ型以外のすべての型のこと

説明
リテラル型 プリミティブ型の特定の値だけを代入可能にする
intersection型 複数の型を組み合わせてすべての型の特性をもつ
union型 複数の型のうち、どれか一つの型を取りえる
array型 配列
tuple型 固定長の配列で各要素の型が指定されている
enum型 関連する定数値を一つのグループとしてまとめる
ユーティリティ型 ある型から作成した新しい型
unknown型 型が不明な時に使う
never型 値を持たない
any型 どんな型でも代入を許す

リテラル型

プリミティブ型の特定の値だけを代入可能にする型のこと

// 文字列リテラル型の例
type Color = "red" | "green" | "blue";

// 数値リテラル型の例
type DiceValue = 1 | 2 | 3 | 4 | 5 | 6;

intersection型

複数の型を組み合わせてすべての型の特性をもつ型

type Employee = Person & Payable;

union型

複数の型のうち、どれか一つの型を取りえる型

type numberOrUndefined: number | undefined;

array型

配列を表す型
下記の例のように書き方は二通りある

let numbers1: number[] = [1, 2, 3];
let numbers2: Array<number> = [1, 2, 3];

tuple型

固定長の配列で各要素の型が指定されている型

// 1番目には[string型],2番目には[number型]しか許容しない
let profile: [string, number] = ["Tanaka", 20];

enum型

列挙型ともいい、関連する定数値を一つのグループとしてまとめる型
数値ベースと文字列ベースの定義がある

数値ベースのenum

例えば下記のように記述するとAppleには1が、Orangeには2が割り当てられる

enum Fruits {
  Apple=1,
  Orange,
}; 

文字列ベースのenum

例えば下記のように記述するとAppleにはりんごが、Orangeにはオレンジが割り当てられる

enum Fruits {
  Apple="りんご",
  Orange="オレンジ",
}; 

void型

値を返さない関数の型

function hogehoge(): void {
  console.log("humhum");
}

ユーティリティ型

ある型から新しく作成された別の型

説明
Required<T> 全プロパティを必須にする
Readonly<T> 全プロパティを読み取り専用にする
Partial<T> 全プロパティをオプショナルにする
Records<Keys,Type> キー・バリューからオブジェクト型をつくる
Pick<T,Keys> 任意のプロパティだけを持つオブジェクト型をつくる
Omit<T,Keys> 任意のプロパティを除いたオブジェクト型をつくる
Exclude<T,U> 任意の方を除外する
Extract<T,U> 任意の方を抽出する
NoInfer<T> 型推論を防ぐ
NonNullable<T> nullとundefiendを除外する
ReturnType<T> 関数の戻り値の型を取得する
Awaited<T> Promiseの解決値の型を取得する

unknown型

型がなにかわからないときに使う型で、どんな値も代入できる
any型よりも安全性が高い

let value: unknown;
value = 1; // OK
value = "string"; // OK
value = { name: "オブジェクト" }; // OK

never型

「値を持たない」を意味する特別な型
主にエラーやループしている関数に対して使用される

any型

どんな型でも代入を許す型

let value: any;
value = 1; // OK
value = "string"; // OK
value = { name: "オブジェクト" }; // OK

Discussion