Hi 
Ich bin dabei die target Version in einem Projekt anzuheben. Aus Testzwecken wollte ich dann mal ausprobieren was passiert, wenn ich ein JS-Feature nutze, dass erst in einer späteren ES Version dazugekommen ist als das was ich im target konfiguriert habe
Kleiner Ausschnitt aus meiner tsconfig
Testcode:
Aber nur bei
Die anderen 2 sind kein Problem. Aber warum? Die müssten doch auch fehlschlagen?
Wenn das stimmt, dann verstehe ich das mit dem target nicht wirklich.
Wenn ich den Testcode auf TS eingebe, werden alle 3 Methoden mit einem error versehen:
https://www.typescriptlang.org/play/
Was fehlt in meinem Projekt, dass auch die anderen 2 Methoden fehlschlagen beim compilieren?
Ist hier evtl. IntelliJ das Problem? Ich verwende die Version 2023.3.1
Ich bin dabei die target Version in einem Projekt anzuheben. Aus Testzwecken wollte ich dann mal ausprobieren was passiert, wenn ich ein JS-Feature nutze, dass erst in einer späteren ES Version dazugekommen ist als das was ich im target konfiguriert habe
Kleiner Ausschnitt aus meiner tsconfig
JSON:
"compilerOptions": {
"target": "ES2015",
"module": "ES2022",
"moduleResolution": "node",
"baseUrl": "../abc/src/main/webpack",
"removeComments": true,
"allowJs": true,
"preserveConstEnums": true,
"allowSyntheticDefaultImports": true,
"sourceMap": true,
Testcode:
Javascript:
'str'.isWellFormed();
const entries = Object.entries({a: 1});
const b = [1, 2, 3].includes(3);
isWellFormed() ist ES2024Object.entries ist ES2017includes() ist ES2016Aber nur bei
isWellFormed() schlägt die Kompilierung fehl mit der Meldung:TS2550: Property 'isWellFormed' does not exist on type '"str"'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2024' or later.
Die anderen 2 sind kein Problem. Aber warum? Die müssten doch auch fehlschlagen?
ChatGPT meint:
Array.prototype.includes wurde in ECMAScript 2016 (ES7) eingeführt. Die Typdefinitionen für diese Methode sind jedoch in der Standardbibliothek von TypeScript enthalten, die auch für frühere Zielversionen verwendet wird. Das bedeutet, dass der TypeScript-Compiler keine Fehler meldet, wenn includes verwendet wird, selbst wenn target auf ES2015 gesetzt ist.
Wenn das stimmt, dann verstehe ich das mit dem target nicht wirklich.
Wenn ich den Testcode auf TS eingebe, werden alle 3 Methoden mit einem error versehen:
https://www.typescriptlang.org/play/
Was fehlt in meinem Projekt, dass auch die anderen 2 Methoden fehlschlagen beim compilieren?
Ist hier evtl. IntelliJ das Problem? Ich verwende die Version 2023.3.1
Zuletzt bearbeitet: