時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【解説】TypeScriptの型定義をまとめてみた【初心者向け】

記事内に広告を含みます

パソ君
パソ君

・TypeScriptの型定義ってどんなのがあるの?

こんな疑問にお答えします。

TypeScriptには色々な型定義がありますよね。

今回は自分用のメモとして型定義をまとめてみました!

ジト
ジト

参考にどうぞ

ということで、この記事では「TypeScriptの型定義」についてまとめていきます。

この記事でわかること

・TypeScriptの型定義

・TypsScriptの型推論

【解説】TypeScriptの型定義をまとめてみた【初心者向け】

TypeScriptの型定義は主に下記があります。

・string型

・number型

・boolean型

・null型

・undefined型

・any型

・unknown型

・リテラル型

・Union型

・配列型

・Tuple型

・object型

・enum型(列挙型)

・型エイリアス

・関数宣言の型(パラメータ、戻り値)

・関数の型 変数時

・関数の型 アロー関数

・void型

・never型

順に見ていきましょう。

string型

文字列の型を定義します。

// string型
let greeting: string = 'Hello';

number型

数値の型を定義します。

// number型
let num: number = 10;

boolean型

「真(true)」か「偽(false)」の型を定義します。

// boolean型
let itemValue: boolean = true;

null型

意図的に値が存在しない型を定義します。

// null型
let nullValue: null = null;

undefined型

未定義を表します。

// undefined型
let undefinedValue: undefined = undefined;

any型

どの型でも許可されます。
バニラJavaScriptと同じ感じです。

// any型
let anyItem: any = 'おはよう';
anyItem = 10;
anyItem = true;

なるべく使わないほうが良い型です。

unknown型

unknown型はany同様に、どの値でも代入可能です。

// unknown型
let unknownValue: unknown;
unknownValue = 10; // OK
unknownValue = true; // OK
unknownValue = 'おはよう'; // OK

let stringValue: string;

// エラー
stringValue = unknownValue;

// OK
if (typeof unknownValue === 'string') {
  stringValue = unknownValue;
}

ただそのままでは利用できません。

利用するためにはtypeを明示して、型をチェックする必要があります。

リテラル型

特定の値を指定できる型となります。

// リテラル型
const orange: 'orange' = 'orange'
const orangeNum: 3 = 3;
const orangeTrue: true = true;

Union型(ユニオン型)

「〇〇型もしくは〇〇型」という定義ができます。

// union型
let unionItem: string | number = 'おはよう';
unionItem = 10;

ちなみに配列時は()を記述↓

// 配列時
let unionItems: (string | number)[] = ['あいさつ', 100]

配列型

: 型定義[] の形で記述します。

// 配列型
const fruits: string[] = ['りんご', 'みかん','もも']

const nums: number[] = [10, 50, 100]

const mixed: (string | number)[] = ['あいさつ', 100]

Tuple型(タプル)

型の順番や種類、数まで決めれる定義になります。

// Tuple型
const fruitInfo: [string, number, boolean] = ['もも', 300, true]

上記の場合4つ目の引数を書くとエラーになりますが、push()メソッドで追加すればいれることは可能です。
(ただし参照するとエラーがでます)

object型

// object型
const fruit: {
  name: string;
  color: string;
  numberOf: number;
} = {
  name: 'もも',
  color: 'ピンク',
  numberOf: 2
}

型定義する部分の末尾は、「改行」or「,」 or「;」になります。

enum型(列挙型)

特定のグループのみを定義する型となります。

// enum型
enum FoodKinds {
  VEGETABLES = 'VEGETABLES',
  FRUIT = 'FRUIT',
}

const food = {
  name: "もも",
  kind: FoodKinds.FRUIT,
}

// OK
food.kind = FoodKinds.VEGETABLES

// エラー
food.kind = '野菜'

仕様が複雑なため、使用頻度は少なめとのこと。

型エイリアス

typeを用いて、型を変数にいれるみたいな感じになります。

// 型エイリアス
type FruitName = 'りんご' | 'みかん' | 'もも';
let apple: FruitName = 'りんご';

関数宣言の型(パラメータ、戻り値)

関数ではパラメータと戻り値に対して、型を定義できます。

// 関数の型(パラメータ、戻り値)
function calculation(a: number, b: number): number {
  return a + b
}

ちなみに戻り値は型推論がききますが、パラメータは型推論されません。
(型推論については後述)

そのためパラメータに型定義しないと、any型になってしまうので注意。

関数の型 変数時

変数に関数を入れたときの型定義が下記になります。

「:」ではなく「=>」になるのが特徴です。

// 関数の型 変数時
function calculation(a: number, b: number): number {
  return a + b
}

const calculationAdd: (a: number, b: number) => number = calculation;

無名関数のときはこちら↓

// 関数の型 変数時 無名関数
const calculationAdd: (a: number, b: number) => number = function (a: number, b: number): number {
  return a + b
}

関数の型 アロー関数

// 関数の型 アロー関数
const calculationArrow = (a: number, b: number): number => a + b;

void型

戻り値がないときに定義する型になります。

// 関数 void型
function fruitLog(): void {
  console.log('この果物はオレンジです');
}

returnの処理がないときですね。

never型

何も返さず終わりがないときに使う型になります。

// never型
function errorValue(): never {
  throw new Error('エラーがあります')
}

無限ループなどで使えます。

【推奨】TypeScriptの型推論を使う

TypeScriptには型を自動で推論してくれる「型推論」という機能があります。

例えば「boolean型」に定義した記述を↓

let itemValue: boolean = true;

下記のようにしても自動で「boolean型」にしてくれるんですよね。

let itemValue = true;

代入された値から、型を推論してくれます。

実際にVScodeで変数名をホバーしてみると、この画像のように型が定義されてるのがわかるかと。

これがTypeScriptの型推論となります。

TypeScriptの型推論を使うのが推奨

パソ君
パソ君

型推論されるなら定義する必要ないの??

と疑問になりますよね。

調べたところ基本的には型推論」を使うのが推奨されているとのこと。

「型推論」を使うことで、コード量が短くなるため。
またホバーすれば型がわかりますからね。

ただ例外もあります。

例えば下記のように、初期段階で代入しないときは型の定義を記述すべきです。(any型になってしまうので)

let itemValue;

↓ any型になるので、ちゃんと定義する

let itemValue: boolean;

このように基本的には「型推論」を使いつつ、例外時は型を定義するのが良いでしょう。

(勉強時はちゃんと型定義したほうが良いかと)

【解説】TypeScriptの型定義をまとめてみた【初心者向け】:まとめ

  • string型
  • number型
  • boolean型
  • null型
  • undefined型
  • any型
  • unknown型
  • リテラル型
  • Union型
  • 配列型
  • Tuple型
  • object型
  • enum型(列挙型)
  • 型エイリアス
  • 関数宣言の型(パラメータ、戻り値)
  • 関数の型 変数時
  • 関数の型 アロー関数
  • void型
  • never型
ジト
ジト

TypeScriptで型を定義するときはためしてみてね!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA