正如Redux guide中所建议的,建议的方法是为Redux操作类型定义字符串常量:
const FOO = 'FOO';
const BAR = 'BAR';
dispatch({ type: FOO });
据我了解,大多数已解决的问题都适用于非类型化的JavaScript,并且常量对于静态类型的应用程序是多余的:
type actionTypes = 'FOO' |
'BAR';
dispatch<actionTypes>({ type: 'FOO' });
dispatch<actionTypes>({ type: 'BAZ' }); // type error
是否存在不使用上述常量的特定问题?
这个问题同时适用于TypeScript和Flow,因为它们在这方面似乎相似。
答案 0 :(得分:0)
与PropTypes
相同,在typescript中是多余的,动作常量是多余的。
redux操作中常量的原因是为了避免拼写错误。您将在拼写错误而不是静默缩减器上获得运行时错误。使用TypeScript,您不需要
- )
答案 1 :(得分:0)
从Redux source code中可以看出,动作类型常量的优点是它们可以被命名空间:
export const ActionTypes = {
INIT: '@@redux/INIT'
}
同样的事情需要在使用字符串的代码中进行许多更改。