2017-02-17 77 views
1

我想知道如何将一个Object铸造成Flow中用户定义的精确类型。例如:是否可以在Flow中将对象转换为确切类型?

//@flow 

type exactType = {|x : number|} 

function test(a : Object) : exactType { 
    if(typeof(a.x) === 'string'){ 
    return (a : exactType); 
    } 
    throw new Error('Incorrect type!') 
} 

甚至可以写这样的函数吗?即是否可以为类型检查器提供参数a只有一个字段,名称为x,类型为number

回答

2

没有安全的方法来做到这一点。但是,您可以随时通过any投规避typechecker:

return ((a: any): exactType);

理想情况下,你会重构代码,避免使用Object,因为它是一个不安全的类型。但是,如果这是不可能的,你所能做的最好的就是小心翼翼地规避类似这样的类型分析。

相关问题