Prečo Eclipse niekedy varuje pred poľami polí v JavaScripte?
V Eclipse nasledujúci riadok JavaScriptu
var a1 = [[1, 2], [3, 4]];
generuje varovania:
Type mismatch: cannot convert from Number[] to any
Type mismatch: cannot convert from Number[] to any
zatiaľ čo
var a2 = [['w', 'x'], ['y', 'z']];
generuje :
Type mismatch: cannot convert from String[] to any
Type mismatch: cannot convert from String[] to any
a
var a3 = [[1, 2], ['y', 'z']];
generuje :
Type mismatch: cannot convert from Number[] to any
Type mismatch: cannot convert from String[] to any
Avšak tieto riadky sú všetky v poriadku:
var a4 = [[1, 'x'], [3, 'y']];
var a5 = [[1, 2]];
var a6 = [['x', 'y']];
Zdá sa, že existuje problém s poliami polí, keď podpolia obsahujú rovnaký primitívny typ. Avšak nechápem prečo a kód sa zdá vykonávať v poriadku. Mohol by mi niekto vysvetliť, čo sa Eclipse obáva?
Odpoveď č. 1
Vyzerá to ako chyba. V podstate v JavaScripte neexistuje niečo ako nezlučiteľnosť typov.
Riskol by som si tipnúť, že parser, ktorý toto robí, bol založený na Java parseri, a toto je trochu toho pôvodného parsera, ktorý preráža.
Odpoveď č. 2
JavaScript validátory v Eclipse ich môžu filtrovať v predvoľbách.