NEWS
JavaScript-Adapter 3.7.0 - Editor: andere Fehlerbehandlung und Programmier-Best-Practice
-
Hallo,
der Editor, den wohl der Adapter 3.7.0 mitbringt, macht Spaß. Nun werden kontext-abhängig Vorschläge gemacht etc.
Außerdem behandelt dieser nun Fehler anders (z.B. mit Kringel unter Fehlern, etc.) - insgesamt super für die Programmierung.
Allerdings weichen nun die Hinweise ab, konkret fiel folgendes auf:
1.) Dot Notation bei Arrays:
var myArray = []; myArray.test = "1"; myArray['test2'] = "1";
Bei "myArray.test = "1";" wird nun "test" rot unterstrichen mit Hinweis "Property 'test' does not exist on type 'any[]'."
Mit älterem Adapter wurde stattdessen "myArray['test2'] = "1";" bemängelt mit dem Hinweis, man solle die "Dot Notation" mit Punkt verwenden.
Soll man nun die Skripts am besten umschreiben und wieder weg von der "Dot Notation" bei Arrays gehen und zur "Bracket Notation" wechseln?
2.) Funktion, die kein 2. Argument bekommt:
function machWas(strText, bWert) { log(strText); } machWas("Hallo");
Wenn man die Funktion mit "machWas("Hallo");" aufruft, wird rot unterkringelt mit dem Hinweis, dass das 2. Argument fehlt. Das ist an für sich super, allerdings habe ich so mit optionalen Werten gearbeitet. Wie kann man denn hier ein 2. Argument als optional vergeben?
In anderen Programmiersprachen kenne ich das z.B. so mit "opt" zur Angabe, dass der 2. Parameter optional ist:
function machWas(strText, opt bWert) {
Wie geht denn das in JavaScript?
Danke.
-
Ein wenig Kontext: Der neue Editor nutzt unter der Haube Microsoft's TypeScript zur Typprüfung, was wohl aktuell eins der mächtigsten Tools hierfür ist. Meistens kann man hier davon ausgehen dass die bemängelten Fehler wirkliche Fehler sind. Du kannst sie zwar ignorieren (außer wenn du TypeScripts schreibst), aber es ist wahrscheinlich dass Probleme in der Laufzeit auftreten können
@Mic:1.) Dot Notation bei Arrays:
var myArray = []; myArray.test = "1"; myArray['test2'] = "1"; ```` `
Array haben eigentlich keine benannten Eigenschaften. Diese werden auch bei den üblichen Array-Methoden ignoriert:
myArray.length; // ist 0! myArray.join(","); // ist "" (leer) myArray.pop(); // undefined
Für das was du vorhast, sind Objekte gedacht.
var myObj = {}; // geschweifte Klammern! myObj.test = "1"; // alles gut! myObj['test2'] = "1"; // auch ok, wenn auch nicht nötig.
@Mic:2.) Funktion, die kein 2. Argument bekommt:
function machWas(strText, bWert) { log(strText); } machWas("Hallo"); ```` `
Hierfür sind JSDoc-Kommentare gedacht:
`/** * @param {string} a * @param {string} [b] */ // (oder kürzer, ohne Typanmerkung) /** * @param [b] */ function foo(a, b) { return a + (b || ""); } foo("1");` Im obigen Code werden a und b als strings definiert, b zusätzlich als optional mit dem Standardwert "". Der Editor scheint diese aber zu ignorieren - muss ich mal schauen, ob das Problem in einer aktuelleren Version behoben ist.[/b][/b]
-
Danke für Deine Info und Ausführungen, das hilft sehr!