Types 用户定义的类型为';你不能用“任何”类型吗?

Types 用户定义的类型为';你不能用“任何”类型吗?,types,typescript,Types,Typescript,如果我正在编写用户定义的类型保护,例如: 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 } Typescript能够在上面的if块中找出x的类型 但是,如果我将代码更改为: var

如果我正在编写用户定义的类型保护,例如:

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
}
Typescript能够在上面的
if
块中找出
x
的类型

但是,如果我将代码更改为:

var x; // No type here. It's an "any" for now.
if(isCat(x)) {
  x.meow(); // What!? It's type `any`??
}
Typescript假定
x
any
,即使在类型保护
if
语句的“安全”范围内


已验证错误。此处已报道:

相关:感谢您的提醒(以及您为TS:-p所做的一切)。