diff --git a/docs/types/type-assertion.md b/docs/types/type-assertion.md index 0f7cfb41..92d6c180 100644 --- a/docs/types/type-assertion.md +++ b/docs/types/type-assertion.md @@ -97,7 +97,7 @@ function handler(event: Event) { } ``` -あなたがその型を依然として必要とするなら、二重アサーションを使うことができますが、最初にすべての型と互換性のある`any`をアサートするので、コンパイラはもう文句を言うことはありません: +あなたがその型を依然として必要とするなら、二重アサーションを使うことができますが、最初にすべての型と互換性のある`unknown`(または`any`)をアサートするので、コンパイラはもう文句を言うことはありません: ```ts function handler(event: Event) { @@ -107,3 +107,8 @@ function handler(event: Event) { #### TypeScriptが単一のアサーションが不十分と判断する方法 基本的に、`S`が`T`のサブタイプであるか `T`が`S`のサブタイプである場合、`S`から`T`へのアサーションは成功します。これは、タイプアサーションを行う際に特別な安全性を提供するためです。完全に任意の型アサーションは非常に安全でない可能性があります。そして、安全でない状態にするために、あなたは`any`を使用する必要があります。 + +#### `as any as` vs `as unknown as` +両方とも Typescript からすると同じくらい安全ではないです。お好きな方をお使いください。考慮する点としては: +- Linter は `unknown` を好む (`no-explicit-any` ルールを設定している場合) +- `any` は `unknown` よりタイピングする文字数が少ない