如何使用流类型约束此函数的返回值?

时间:2017-11-15 12:18:53

标签: javascript flowtype

我想说“mySelector返回一个字符串”。我可以使用Flowtype吗?

import { createSelector } from 'reselect';

const mySelector = createSelector([anotherSelector], () => 'foo');

1 个答案:

答案 0 :(得分:1)

如果您还没有这样做,将reselect的类型定义引入项目可能会有所帮助。您可以使用flow-typed自动获取npm附加费用的类型定义。 (Reselect确实附带了Typescript类型定义,Flow可能会在将来读取Typescript定义;但AFAIK Flow目前无法读取Typescript定义。)

Flow是否正确推断mySelector的类型,显式声明您期望的类型可能很有用。您可以通过在const声明:

上添加类型注释来实现
const mySelector: () => string = createSelector([anotherSelector], () => 'foo');

这样的显式注释可以帮助确保您与类型检查器在同一页面上。当您引用mySelector时,Flow会强制执行您指定的签名,除非Flow为mySelector推断出一种矛盾的类型,在这种情况下它会报告错误。