foo
の推論された型が{}
、すなわちプロパティがゼロのオブジェクトだからです。したがって、bar
やbas
を追加することはできません。これは、単純に型アサーションas Foo
で修正することができます:as foo
と<foo>
の違い<foo>
でした。これは以下のとおりです:<foo>
スタイルのアサーションを使用する場合、言語文法にあいまいさがあります。as foo
を使うことをお勧めします。any
をアサートするので、コンパイラはもう文句を言うことはありません:S
がT
のサブタイプであるか T
がS
のサブタイプである場合、S
からT
へのアサーションは成功します。これは、タイプアサーションを行う際に特別な安全性を提供するためです。完全に任意の型アサーションは非常に安全でない可能性があります。そして、安全でない状態にするために、あなたはany
を使用する必要があります。