【问题标题】:Is it possible to cast an Object to an exact type in Flow?是否可以将 Object 转换为 Flow 中的确切类型?
【发布时间】:2017-02-17 02:56:16
【问题描述】:

我想知道如何将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 的字段?

【问题讨论】:

    标签: javascript typescript types flowtype


    【解决方案1】:

    没有安全的方法可以做到这一点。但是,您始终可以通过 any 进行转换以绕过类型检查器:

    return ((a: any): exactType);

    理想情况下,您应该重构代码以避免使用Object,因为它是不安全的类型。但是,如果这不可能,您能做的最好的事情就是像这样小心地绕过类型检查器。

    【讨论】:

      猜你喜欢
      • 2016-05-06
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      相关资源
      最近更新 更多