我需要在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
}

答案 0 :(得分:1)
我所做的只是注释函数本身,如
const getForecastHourly = (query: number): ActionType => ({ /* - */ });
由于flow
知道const
,因此它知道价值无法改变,并会自行确定类型。
另一方面,如果您使用let
,那么我也会对变量本身进行注释,因此flow
可以检查重新分配值是否正确类型。