不允许在给定的流式
问题描述:
给出这个简单的使用对象不存在的键:{ id: 'x', value: 1 }
,在打字稿如果你尝试这样做:不允许在给定的流式
type foo = {
id: string,
v: number,
};
const bar: foo = { id: 'something', v: 1111 };
// refrencing non existent key
if (bar.xyz) {
console.log('xyz');
}
,你会得到一个错误说xyz does not exist on foo
。你如何得到相同的结果Flowjs?
我试过以下,但flowjs不抛出任何错误:
type foo = {|
id: string,
v: number,
|};
const bar: foo = { id: 'something', v: 1111 };
if (bar.xyz) { // no errors
console.log('xyz');
}
答
流量始终允许在if
的财产检查。您可以使用此作为解决方法:
if (!!bar.xyz == true) {
答
您的问题仍然存在作为一个未解决的问题。 https://github.com/facebook/flow/issues/106
只要这个问题是开放的,你可以强制做类型转换bar.xyz
布尔。
if (Boolean(bar.xyz))
您将收到此错误。
10:if(布尔(bar.xyz)){ ^属性
xyz
。物业在10未发现:如果(布尔(bar.xyz)){ ^对象类型
+0
真是令人惊讶!我坚持(暗暗希望)我使用了flowjs错误,并且有办法让这个工作无需做类型转换 – ke3pup
或'如果(!bar.xyz)' – James
@詹姆斯不正确地发出一个错误按照要求 –
@RyanCavanaugh是读完这个问题后,你会发现你试图强制一个错误 - 当你看到像'== true'这样的代码时自动驾驶。我以前从未使用Flowjs,但我认为它的类型强制会引发错误。 – James