ホームページ > 記事 > ウェブフロントエンド > TypeScriptにおけるunknownとanyの違いについて話しましょう
この記事は、TypeScript での unknown と any を比較し、unknown と any の違いについて説明するのに役立ちます。皆様のお役に立てれば幸いです。
型 any
の変数は任意の値に代入できることがわかっています。
let myVar: any = 0; myVar = '1'; myVar = false;
TypeScript このガイドでは、any
の使用を推奨していません。これを使用すると、型制限が失われるためです。また、型制限の必要性も理由の 1 つです。私たちが TypeScript を選択する理由は、少し反対です。
TypeScript (3.0 以降) は、any
に似た特別な型 unknown
も提供します。 unknown
型変数に任意の値を代入することもできます。
let myVar: unknown = 0; myVar = '1'; myVar = false;
ここで質問があります。any
と unknown## の違いは何ですか。 # ?
unknown と
any の違いをよりよく理解するために、まず次のように書いてみましょう。呼び出したい唯一の引数を持つ関数。
invokeAnything() の唯一のパラメータを
any タイプ
function invokeAnything(callback: any) { callback(); } invokeAnything(1); // throws "TypeError: callback is not a function"に設定します。これは、
callback パラメータが任意のものであるためです。 type なので、ステートメント
callback() は型エラーを引き起こしません。
any 型の変数を使用すると何でもできます。
TypeError: callback is not a function。
1 は数値であり、関数として呼び出すことはできません。TypeScript は、このエラーを回避するためにコードを保護しません。
invokeAnything() 関数が許可されるだけではありません任意のタイプのパラメーターを受け入れるだけでなく、上記のエラーを防ぐためにこのパラメーターの型チェックを強制するにはどうすればよいですか?
unknown ビッグブラザーにフィールドをコントロールしてください。
any と同様、
unknown 変数は任意の値を受け入れます。ただし、TypeScript は、
unknown 変数を使用しようとすると型チェックを強制します。これが私たちが望んでいることではないでしょうか?
function invokeAnything(callback: unknown) { callback(); // Object is of type 'unknown' } invokeAnything(1);
callback パラメータの型は
unknown であるため、ステートメント
callback() には型エラーがあります:
Object isタイプ「不明」。
any とは対照的に、TypeScript は関数ではない可能性のあるものを呼び出すことから保護します。
unknown の変数を使用する前に、型チェックを実行する必要があります。この例では、
callback が関数型であるかどうかを確認するだけです。
function invokeAnything(callback: unknown) { if (typeof callback === 'function') { callback(); } } invokeAnything(1);
未知##を理解するのが難しかったです。 #。どちらの型も任意の値を受け入れるため、any
とどのように異なりますか。2 つの違いを理解するのに役立つルールを次に示します。は
型に割り当てられていますが、型チェックまたは型アサーションを行う前に
unknownCan assign anything to
any タイプでは、
any
上の例は、unknown
と `any の類似点と相違点を示しているだけです。 。 unknown 例:
function invokeAnything(callback: unknown) { // 可以将任何东西赋给 `unknown` 类型, // 但在进行类型检查或类型断言之前,不能对 `unknown` 进行操作 if (typeof callback === 'function') { callback(); } } invokeAnything(1); // You can assign anything to `unknown` typeType check
typeof callback === 'function'、
callback
any
例:
function invokeAnything(callback: any) { // 可以对 `any` 类型执行任何操作 callback(); } invokeAnything(1); // 可以把任何东西分配给`any`类型
callback が
any
callback() # を強制しません## ステートメントを使用して型チェックを実行します。 3. 概要
より安全な型を提供するため、any
の代わりに unknown
を使用することをお勧めします。
を操作したい場合は、次のようにする必要があります。 Type アサーションを使用するか、特定のタイプに絞り込みます。 プログラミング関連の知識について詳しくは、
プログラミング ビデオ
をご覧ください。 !
以上がTypeScriptにおけるunknownとanyの違いについて話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。