FlowType注释函数返回类型

时间:2017-09-26 08:28:56

标签: javascript flowtype

我需要在FlowType中注释一个返回对象的函数,我看到我有几个选项:

A)导出对象和功能的注释

const getForecastHourly:ActionType = (query:number):ActionType => ...

B)仅对功能进行注释:

const getForecastHourly = (query:number):ActionType => ...

C)仅导出对象的注释:

const getForecastHourly:ActionType  = (query:number) => ...

在我的代码中我使用的是版本A),但我想知道B或C是否可以等效,哪个版本可以建议以及为什么。



// @flow
import {ActionType} from '../../types'

import 'isomorphic-fetch'
import * as api from '../../app/api'
import * as types from './forecastHourlyActionTypes'

const getForecastHourly:ActionType = (query:number):ActionType => ({
  type: types.GET_FORECAST_HOURLY,
  payload: new Promise((resolve, reject) => {
    fetch(api.forecast(query)).then(response => {
      resolve(response.json())
    })
  })
})

const setForecastHourlyActiveReportType:ActionType = (type:string):ActionType => ({
  type: types.SET_FORECAST_HOURLY_ACTIVE_REPORT_TYPE,
  payload: type
})

export { getForecastHourly, setForecastHourlyActiveReportType }






export type ActionType ={
  +type:string,
  +payload: Object
  }




1 个答案:

答案 0 :(得分:1)

我所做的只是注释函数本身,如

const getForecastHourly = (query: number): ActionType => ({ /* - */ });

由于flow知道const,因此它知道价值无法改变,并会自行确定类型。

另一方面,如果您使用let,那么我也会对变量本身进行注释,因此flow可以检查重新分配值是否正确类型。