Typescript Redux操作类型的字符串与常量

Typescript Redux操作类型的字符串与常量,typescript,redux,flowtype,Typescript,Redux,Flowtype,如中所建议的,建议的方法是为Redux操作类型定义字符串常量: const FOO = 'FOO'; const BAR = 'BAR'; dispatch({ type: FOO }); 据我所知,大多数关注点都适用于非类型化JavaScript,而常量对于静态类型的应用程序来说是多余的: type actionTypes = 'FOO' | 'BAR'; dispatch<actionTypes>({ type: 'FOO' }); d

如中所建议的,建议的方法是为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
type actionTypes='FOO'|
“酒吧”;
分派({type:'FOO'});
分派({type:'BAZ'});//类型错误
不使用如上所示的常量是否存在具体问题


这个问题同时适用于TypeScript和Flow,因为它们在这方面似乎相似。

PropTypes一样,TypeScript中的类型是冗余的,动作常量是冗余的

redux操作中使用常量的原因是为了避免输入错误。您将在输入错误上获得运行时错误,而不是静默减缩器。对于TypeScript,您不需要它

;-)

从中可以看出,动作类型常量的优点是它们可以命名为:

export const ActionTypes = {
  INIT: '@@redux/INIT'
}
同样的事情也需要对使用字符串的代码进行许多更改