是否可以在Flow中将Object转换为精确类型?

时间:2017-02-17 02:56:17

标签: javascript typescript types flowtype

我想知道如何在Flow中将Object转换为用户定义的确切类型。例如:

//@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的字段?

1 个答案:

答案 0 :(得分:3)

没有安全的方法可以做到这一点。但是,您始终可以通过any来绕过类型检查程序:

return ((a: any): exactType);

理想情况下,您会重构代码以避免使用Object,因为它是一种不安全的类型。但是,如果那是不可能的,那么你能做的最好的就是小心翼翼地绕过这样的类型搜索器。