È possibile rilevare errori di battitura come nell'istruzione esempio switch case di seguito?Javascript import handle undefined
Il modo preferito sarebbe che eslinter segnala un avviso/errore. Attualmente l'aggiunta di toString()
a const
può essere utilizzata per aumentare un TypeError
in fase di esecuzione se non definito.
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;
}
}
UPDATE:
Come @ nikc.org risposto eslint-plugin-import con namespace opzione può essere utilizzata per rilascio di fibre questi bug.
Qui è piccolo repository con la configurazione e la demo:
https://github.com/bmihelac/test-js-import-undefined/tree/eslint-plugin-import
parte rilevante del eslint config è:
"plugins": ["import"],
"rules": {
"import/namespace": [2],
Bene, il problema con il tentativo di individuare errori del genere è che non sono necessariamente errori. Non c'è niente * errato * nel codice, in altre parole, date le regole di JavaScript. – Pointy
@Pointy poiché i moduli es6 sono statici spero che alcuni analizzatori statici possano trovare errori di battitura come questo. – bmihelac
Esatto, è probabile che un'analisi statica intelligente avverta almeno l'assenza della costante errata. – Pointy