5

以下の switch case の例のステートメントのようにタイプミスを見つけることは可能ですか?

推奨される方法は、eslinter が警告/エラーを報告することです。現在、未定義の場合、実行時に を発生させるために追加toString()を使用できます。constTypeError

actionTypes.js

export const UPDATE_REQUEST = 'UPDATE_REQUEST';

reducer.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 config の関連部分は次のとおりです。

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

3 に答える 3

1

免責事項、私はtern-lintの作成者です。

「不明なプロパティ」などのエラーを報告できるtern-lintを使用することをお勧めします。

このリンターは、コマンドまたはそれをサポートするエディター (Emacs、Atom、CodeMirror、または Eclipse) で使用できます。ここにEclipse tern.javaのスクリーンショットがあります

ここに画像の説明を入力

于 2015-11-25T01:23:22.127 に答える
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;
  }
}

典型的なリンターはそれを非常に簡単に拾うことができ、副次的な利点は、あなたの行動を彼らの懸念に分割できることです.

于 2015-11-25T05:31:25.807 に答える