javascript - 是否可以将对象转换为 Flow 中的精确类型?

标签 javascript typescript types flowtype

我想知道如何将 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/

相关文章:

typescript - 调试时显示枚举描述而不是值

types - Coq 看不出两种类型是一样的

javascript - 在tinymce上自动点击

javascript - 通过鼠标点击使用 webgl 创建一个圆

javascript 关闭 : implicit parameters, 调用者

不允许以 2 * 开头的正则表达式

typescript - 变量!.property 和变量?.property 是什么意思? ¿JS TS?

允许两种数据类型的 C 函数

Java 泛型,强制使用文字类型

javascript - 调整 Angular Material 中的圆形进度