アサーション関数 (assertion functions)
やりたいことはほぼType predicateと同じです。Type predicateはboolean型の戻り値に対して使いましたがこちらは例外を投げるかどうかで判定します。上記関数isDuck()をAssertion functionsで書きかえると次のようになります。
typescript
typescript
こちらはこの関数が呼ばれた後であればいつでも変数animalはDuck型として解釈されます。