「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > TypeScript の &#any&#、&#unknown&#、および &#never&# を理解する

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

2024 年 8 月 7 日に公開
ブラウズ:979

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 は信頼性の高いアプリケーションを構築するための強力なツールになります。
コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/sharoztanveer/ Understanding-any-unknown-and-never-in-typescript-4acb?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3