[解決済み] 'unknown' vs. 'any'
2022-03-22 11:02:52
質問
TypeScript 3.0の紹介
unknown
という型があるそうです。
unknownは、組み込み型になったため、予約型名になりました。 unknownの使用目的によっては、unknownを削除することもできます。 の宣言を完全に削除するか(新しく導入されたunknown型を優先する)、あるいは 他の名前に変更します。
との違いは何ですか?
unknown
と
any
? どのような場合に
unknown
オーバー
any
?
どのように解決するのですか?
についての詳細を読むことができます。
unknown
の中で
PR
または
RC発表
, しかし、その要点は
[...] unknownは、anyの型安全な対応物である。しかし、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に有効である。これにより、ユーザーは返された値を安全にイントロスペクトすることを強いられる。
関連
-
[解決済み] タイプスクリプトのエラーです。TS7053 要素が暗黙のうちに 'any' 型を持っています。
-
[解決済み] グローバル定数の定義
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
TS1128: 宣言または声明が必要です。
-
[解決済み] TypeScriptの「as const」の意味とその使用例とは?
-
[解決済み] サービスにDocumentを挿入する方法は?
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] モジュール 'module-name' の宣言ファイルが見つかりませんでした。'/path/to/module-name.js' は暗黙のうちに 'any' 型を持っています。
-
[解決済み】TypeScriptの関数のオーバーローディング
-
[解決済み】タイプライター。TS7006: パラメータ 'xxx' は暗黙のうちに 'any' 型を持つ。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] タイプスクリプトのエラーです。TS7053 要素が暗黙のうちに 'any' 型を持っています。
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] error TS2339: Property 'x' does not exist on type 'Y'.
-
[解決済み] Apollo Serverでコンテキストオブジェクトを正しく入力するにはどうすればよいですか?
-
[解決済み] TypeScriptの非同期関数でプロミスを返す
-
[解決済み] TypeScriptでパラメータとして強く型付けされた関数は可能か?
-
[解決済み] ジェネリックスを使用したTypescriptのarrow関数の構文はどのようになっていますか?
-
[解決済み] async/await構文で拒否する方法は?
-
[解決済み] TypeScriptのクラス型チェック
-
[解決済み】ブロックに`@ts-ignore`を使用するには?