我想知道如何将 Object
转换为 Flow 中用户定义的精确类型。例如:
//@flow
type exactType = {|x : number|}
function test(a : Object) : exactType {
if(typeof(a.x) === 'string'){
return (a : exactType);
}
throw new Error('Incorrect type!')
}
是否可以编写这样的函数? IE。是否可以让类型检查器知道参数 a
只有一个名为 x
且类型为 number
的字段?
最佳答案
没有安全的方法可以做到这一点。但是,您始终可以通过 any
进行强制转换来绕过类型检查器:
return((a:any):exactType);
理想情况下,您应该重构代码以避免使用 Object
,因为它是不安全的类型。但是,如果这不可能,您能做的最好的事情就是像这样小心地绕过类型检查器。
关于javascript - 是否可以将对象转换为 Flow 中的精确类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288594/