javascript - 在 Flow 中使用什么来代替函数和对象类型

标签 javascript flowtype

Flow 文档建议谨慎使用 FunctionObject 类型。如果是这样的话,我应该使用什么?以下是几个场景:

export function executeFunction(someFunc) {
  someFunc.call(this, 'whatever');
}

export function processThing(someObj) {
  // ...
}

注释这些的正确方法是什么? (注意:someObj 可以是任何对象......并且它可以有几十个方法和属性,我不想在注释中全部输入这些)

最佳答案

首先,由于您没有使用 processThing 的输出,我认为它不会返回任何内容,因此您可以为此添加注释:

export function processThing(someObj): void {
<小时/>

关于 someObj...您希望在传递和访问该对象时具有类型安全性吗?

否:考虑使用 anymixedObject 类型进行注释,具体取决于您的具体含义通过“任何”。

是:您必须对其进行注释。您可以内联编写其类型,但也可以在其他位置(包括在不同的文件中)定义该类型,并根据需要在多个位置重用它。例如,像这样:

type Thing = {
  foo: string;
  bar: number;
}
// ...
export function processThing(someObj: Thing): void {

如果 someObj 预计是某个 ES6 类的实例,您也可以将该类用作类型(请参阅 docs )。

<小时/>

对于 executeFunction,您可以指定您想要一个接受 Thing 作为其第一个参数且不返回任何内容的函数:

export function executeFunction(someFunc: (something: Thing) => void) {

关于javascript - 在 Flow 中使用什么来代替函数和对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112908/

相关文章:

javascript - 获取 optgroup 中选择选项的索引

flowtype - 流类型 - 生成 Libdef

npm 运行脚本流不起作用

javascript - Internet Explorer 自动将高度和宽度属性添加到新附加的图像

javascript - Axios 和 Fetch 有什么区别?

javascript - HTML 表 : Edit button trigger Javascript event

javascript - FlowType - 复杂对象的重复声明

javascript - 无法使用绑定(bind)到 `this.setState` 的对象文字调用 `partialState`,因为字符串 [1] 与字符串文字 [2] 不兼容

javascript - 如何检查javascript Flow类型中是否存在值

javascript - 设计一个专业的网站