「不明」と「任意」の違い 質問する

「不明」と「任意」の違い 質問する

TypeScript 3.0unknownでは、Wiki によると、型が導入されています。

unknown は組み込み型になったため、予約済みの型名になりました。unknown の用途によっては、宣言を完全に削除する (新しく導入された unknown 型を優先する) か、別の名前に変更することをお勧めします。

unknownとの違いは何ですか? overanyはいつ使用すればよいですか?unknownany

ベストアンサー1

unknown詳細は以下をご覧ください。広報またはRCアナウンス要点は次のとおりです。

[..] unknown は、any の型安全な対応物です。anything は unknown に代入可能ですが、unknown は、型アサーションまたは制御フローに基づく絞り込みなしでは、それ自体と any 以外に代入できません。同様に、最初にアサートするか、より具体的な型に絞り込まない限り、unknown に対する操作は許可されません。

いくつかの例:

let vAny: any = 10;          // We can assign anything to any
let vUnknown: unknown =  10; // We can assign anything to unknown just like any 


let s1: string = vAny;     // Any is assignable to anything 
let s2: string = vUnknown; // Invalid; we can't assign vUnknown to any other type (without an explicit assertion)

vAny.method();     // Ok; anything goes with any
vUnknown.method(); // Not ok; we don't know anything about this variable

推奨される使用方法は次のとおりです。

TypeScript では、最も機能の少ない型を記述したい場合がよくあります。これは、「これは任意の値になる可能性があるため、使用する前に何らかのチェックを実行する必要があります」というシグナルを発する API に役立ちます。これにより、ユーザーは返された値を安全にイントロスペクトできるようになります。

おすすめ記事