5

是否可以在下面的 switch case 示例语句中捕获拼写错误?

首选方法是 eslinter 报告警告/错误。如果未定义,当前添加toString()const可用于在运行时引发。TypeError

actionTypes.js

export const UPDATE_REQUEST = 'UPDATE_REQUEST';

减速器.js

import * as types from '../constants/actionTypes';

export default function pouchdbReducer(state = {}, action) {
  switch (action.type) {
    case types.UPDDATE_REQUEST:
      // there is a typo above and it evaluates to `undefined`
      // this code would never be reached - how to make it an error
      return Object.assign({}, state, {updated: true});
    default:
      return state;
  }
}

更新:

正如@nikc.org 回答的那样,带有命名空间选项的 eslint-plugin-import可用于检查此类错误。

这是带有配置和演示的小型存储库:

https://github.com/bmihelac/test-js-import-undefined/tree/eslint-plugin-import

eslint 配置的相关部分是:

"plugins": ["import"],
"rules": {
  "import/namespace": [2],
4

3 回答 3

1

免责声明,我是tern-lint的作者。

我建议你使用tern-lint能够报告诸如“未知属性”之类的错误。

您可以将此 linter 与命令或支持它的编辑器(Emacs、Atom、CodeMirror 或 Eclipse)一起使用。这是 Eclipse tern.java的屏幕截图

在此处输入图像描述

于 2015-11-25T01:23:22.127 回答
0

ESLint的eslint -plugin-import插件对s 和s执行静态分析,并且可以配置为根据不同的标准引发错误或警告,包括您的问题中您拼错了对导入符号的引用的情况。importexport

为了完全消除这个问题,您可以看一下Tern,它可以让您在多个编辑器中获得代码洞察力和代码完成功能,从而完全避免拼写错误。

于 2015-11-23T14:58:44.523 回答
0

我想根据动作类型的数量(如果您愿意将它们分解),您可以稍微改变导入它们的方式。

也许是这样的:

import {TYPE_ONE, TYPE_TWO} from '../constants/firstActionTypes';
import {TYPE_THREE} from '../constants/secondActionTypes';

export default function pouchdbReducer(state = {}, action) {
  switch (action.type) {
    case TTYPE_ONE:
      // Linting should identify this easily now
      return Object.assign({}, state, {updated: true});
    default:
      return state;
  }
}

典型的 linter 可以很容易地发现这一点,并且附带的好处是您可以将您的行为分解为他们的关注点。

于 2015-11-25T05:31:25.807 回答