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?

TypeScriptの型について

Last updated at Posted at 2025-02-24

any型

どんな型でも受け入れるが、型チェックが行われないため安全性が低い。
メリット: 非常に柔軟で、どんな型でも扱えるため、プロトタイピングや型定義が未確定な場合に素早く実装できる。
デメリット: 型チェックが行われないため、意図しないエラーを引き起こしやすく、安全性が低い。

let value: any;

value = "hello";   // OK
value = 123;       // OK
value = true;      // OK

// any型なので何でもできる(型エラーなし)
value.toUpperCase();  // OK
value.foo();          // OK(エラーにならない)

unknown型

型が不明な値を保持するが、利用時には型チェックが必要。安全性が高い。
メリット: 型が不明な場合でも安全に操作できる。型チェックを強制することでコードの安全性を向上させる。
デメリット: 使用する前に型チェックが必要なため、コードが少し冗長になる可能性がある。

let value: unknown;

value = "hello";   // OK
value = 123;       // OK
value = true;      // OK

// そのままではエラー(型の保証がないため)
value.toUpperCase();  // エラー
value.foo();          // エラー

// 型チェックをすればOK
if (typeof value === "string") {
   value.toUpperCase();  // OK
}
// 悪い例: anyを使ったケース
function handleApiResponse(response: any) {
  console.log(response.name); 
}

// 改善例: unknownを使ったケース
function handleApiResponse(response: unknown) {
  if (typeof response === "object" && response !== null && "name" in response) {
    console.log((response as { name: string }).name); // 型チェック後にプロパティにアクセスするため安全
  } else {
    console.log("無効なレスポンスです");
  }
}

void型

関数が値を返さないことを示す。戻り値のない関数に使う。
メリット: 関数が値を返さないことを明示することで、コードの意図をはっきりさせることができる。
デメリット: 他の型と比べて使用の幅が狭く、特に関数の戻り値に限定される。

function logMessage(message: string): void {
  console.log(message);
}

never 型

決して値を返さないことを示す。常に例外をスローする関数や無限ループに使う。
メリット: 到達不能なコードを明示することで、型システムを活用したバグの防止に役立つ。
デメリット: 非常に特殊なケースに限定されるため、意図して使う機会が少ない。

function infiniteLoop(): never {
    while (true) {
        console.log("ループ中...");
    }
}
//この関数は処理が永久に続き、終了しないため never 型になる。

function processInput(value: string | number): void {
  if (typeof value === "string") {
    console.log("文字列です: " + value);
  } else if (typeof value === "number") {
    console.log("数値です: " + value);
  } else {
    const neverValue: never = value; // 型チェックの段階で、この行は到達不能であることを示す
    console.log(neverValue);
  }
}

0
0
0

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?