2
私は次のようなユーザー定義型のガードを書いていた場合:ユーザ定義の型ガードは `any`型では動作しませんか?
interface Cat {
meow:() => void;
}
function isCat(a: any): a is Cat {
return a.name === 'kitty';
}
var x: Cat|{};
if(isCat(x)) {
x.meow(); // OK, x is Cat in this block
}
活字体は、上記if
ブロック内x
の種類を把握することができます。
私は、コードを変更する場合は、:
var x; // No type here. It's an "any" for now.
if(isCat(x)) {
x.meow(); // What!? It's type `any`??
}
活字体x
も型ガードif
文の "安全性" の中に、any
であることを前提としています。
関連:http://stackoverflow.com/questions/36940687/why-does-typescript-not-narrow-the-any-type-in-this-type-guard – Alex