ホームページ > ウェブフロントエンド > jsチュートリアル > TypeScript の &#any&#、&#unknown&#、および &#never&# を理解する

TypeScript の &#any&#、&#unknown&#、および &#never&# を理解する

王林
リリース: 2024-07-16 12:24:48
オリジナル
1011 人が閲覧しました

Understanding

TypeScript は堅牢な型システムを提供しますが、特定の型 (any、unknown、never) は混乱を招く可能性があります。より深く理解するために、それらを分解してみましょう。

任意のタイプ

any タイプは 3 つの中で最も単純です。基本的に型チェックを無効にし、変数が任意の型の値を保持できるようにします。例:

let value: any;
value = 42;             // number
value = "Hello";        // string
value = [1, 2, 3];      // array
value = () => {};       // function
value = { key: "val" }; // object
value = new Date();     // date
ログイン後にコピー

これらすべての場合において、TypeScript はエラーを発生させず、型制約なしで変数に対してあらゆる操作を実行できます。これは、JavaScript プロジェクトを TypeScript に移行するときに役立ちます。ただし、any に依存すると型安全性の利点が無効になるため、ほとんどの場合、適切な選択とは言えません。代わりに、unknown の使用を検討してください。

未知のタイプ

不明な型は、操作を実行する前に型チェックが必要なため、どの型よりも安全です。これはすべての可能な値のセットを表しますが、型安全性が適用されます。

let value: unknown;
value = 42;
value = "Hello";

// To perform operations, we need to narrow down the type
if (typeof value === "number") {
  console.log(value + 1); // TypeScript knows value is a number here
}

ログイン後にコピー

unknown を使用すると、操作を続行する前に型チェックが強制されるため、ロギング関数など、あらゆる種類の入力を受け入れる関数にとって有益です。

ネバータイプ

never 型は空の値のセットを表し、何かが決して発生してはならないことを示します。 Never 型には値を割り当てることができないため、徹底的なチェックや到達不能なコードの表現に役立ちます。

type User = { type: "admin" } | { type: "standard" };

function handleUser(user: User) {
  switch (user.type) {
    case "admin":
      // handle admin
      break;
    case "standard":
      // handle standard
      break;
    default:
      const _exhaustiveCheck: never = user;
      // This ensures all cases are handled
  }
}

ログイン後にコピー

新しいユーザー タイプが追加されると、TypeScript はエラーを発生させ、すべてのケースに確実に対処できるようにするため、コード内の徹底的なチェックを維持するのに非常に役立ちます。

結論

未知の、または決して TypeScript のタイプ セーフを強化するものを理解することはできません。安全な型チェックのためには、any は慎重に使用し、unknown を優先し、徹底的なチェックや到達不能なコードには決して使用しないでください。これらの型を正しく使用すると、TypeScript は信頼性の高いアプリケーションを構築するための強力なツールになります。
コーディングを楽しんでください!

以上がTypeScript の &#any&#、&#unknown&#、および &#never&# を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート