TypeScript の型定義をまとめて解説!プリミティブ・配列・オブジェクト・ユニオンも解説!

こんにちは!駆け出しエンジニアのガッキー(@ExplorerZine)です。

今回は TypeScript の基礎的な型の定義方法について書いてみたいと思います!

プリミティブな型からユニオン、配列、オブジェクト型までご紹介していきます!

今回も一緒に学んでいきましょう~

プリミティブな型定義

プリミティブ型とは、JavaScript(および TypeScript)において、

基本的なデータ型のことで、以下のデータの型をいいます。

プリミティブ型とは対称に、オブジェクト型には複数の値を格納することが出来ます。

  • 文字列
  • 数値
  • 巨大な数値
  • 真偽値
  • null
  • undefined

さて、実際の書き方を見てみましょう!

// 文字列
let str: string = "Hello, TypeScript";
str = "Bye";
str = 1; // エラー:数値は文字列型を定義しているstrに格納できない

// 数値
let num: number = 98;

// 巨大な数値(nはBigIntを示すために付け加える必要がある)
let bignum: bigint = 9007199254740991n;

// 真偽値
let bool: boolean = true;

// null
let nullValue: null = null;

// undefined
let undefinedValue: undefined = undefined;

リテラル型

リテラル型は、文字列、数値、真偽値の特定の値だけを許可するように型を指定することができます。

具体的な例を見てみましょう!

// 文字列リテラル型
type Fruit = "apple" | "orange" | "banana";
let fruit: Fruit;

fruit = "apple"; // OK
fruit = "orange"; // OK
fruit = "grape"; // エラー:'grape'はFruit型に含まれていない値

// 数値リテラル型
type Age = 18 | 20 | 25;
let age: Age;

age = 18; // OK
age = 20; // OK
age = 30; // エラー:30はAge型に含まれていない値

// 真偽値リテラル型
type Status = true | false;
let status: Status;

status = true; // OK
status = false; // OK
status = 1; // エラー:1はStatus型に含まれていない値

ユニオン型の定義方法

ユニオン型とは複数の異なる型をひとつの型として設定することができます。

ユニオン型は |(パイプ)を使って「または」の意味を表すことができます。

// 文字列または数値を定義する
let strOrNum: string | number;
strOrNum = 123;
strOrNum = "hoge";

// 3 つ型の定義する
type Status = "success" | "error" | "loading";
let state: Status = "success";

配列の型指定

続いて配列の型指定です。配列の型指定の方法は2つあります。

  1. 型名の後ろに [] を付ける方法
const numbers: number[] = [1, 2, 3, 4, 5];
const fruits: string[] = ["apple", "banana", "orange"];
const mixed: (number | string)[] = [1, "hello", 3, "world"];
  1. Array<要素の型> を使う方法
const numbers: Array<number> = [1, 2, 3, 4, 5];
const fruits: Array<string> = ["apple", "banana", "orange"];
const mixed: Array<number | string> = [1, "hello", 3, "world"];

オブジェクトの型指定

続いてオブジェクトの型指定です。オブジェクトの型指定の方法も複数存在します。

  1. オブジェクト型リテラルを使用する方法
// オブジェクトの型指定
const person: { name: string; age: number } = {
  name: "John",
  age: 30,
};

// プロパティがユニオン型の場合
const user: { name: string; age: number | null } = {
  name: "Alice",
  age: null,
};

2. タイプエイリアスを使用する方法

// タイプエイリアスを定義
type Person = {
  name: string;
  age: number;
};

// オブジェクトにタイプエイリアスを適用
const person: Person = {
  name: "John",
  age: 30,
};

オブジェクトを含む配列

  1. オブジェクト型リテラルを使用する方法
const users: { name: string; age: number }[] = [
  { name: "John", age: 30 },
  { name: "Alice", age: 25 },
  { name: "Bob", age: 35 },
];
  1. タイプエイリアスを使用する方法
type User = {
  name: string;
  age: number;
};

const users: User[] = [
  { name: "John", age: 30 },
  { name: "Alice", age: 25 },
  { name: "Bob", age: 35 },
];

まとめ

いかがでしたか??

TypeScript の型定義についてご紹介してきました!

引き続きブログをお楽しみいただければ嬉しいです。

よかったら Twitter も@ExplorerZineみてくださいね ♪

これからも一緒に学習しましょう~

by
関連記事