D:\workshop\www
λ node -v
v8.12.0
D:\workshop\www
λ npm -v
6.4.1
D:\workshop\www
λ npm install typescript -g
C:\Users\dell\AppData\Roaming\npm\tsc -> C:\Users\dell\AppData\Roaming\npm\node_modules\typescript\bin\tsc
C:\Users\dell\AppData\Roaming\npm\tsserver -> C:\Users\dell\AppData\Roaming\npm\node_modules\typescript\bin\tsserver
+ [email protected]
updated 1 package in 3.061s
D:\workshop\www
λ tsc --version
Version 3.0.3
D:\workshop\www
λ mkdir typescript_learning
D:\workshop\www
λ cd typescript_learning
D:\workshop\www\typescript_learning
λ npm init -y
Wrote to D:\workshop\www\typescript_learning\package.json:
{
"name": "typescript_learning",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
D:\workshop\www\typescript_learning ([email protected])
λ tsc --init
message TS6071: Successfully created a tsconfig.json file.
D:\workshop\www\typescript_learning ([email protected])
λ npm install @types/node --dev-save
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
+ @types/[email protected]
added 1 package from 30 contributors in 1.657s
D:\workshop\www\typescript_learning ([email protected])
λ touch helloworld.ts
D:\workshop\www\typescript_learning ([email protected])
λ tsc helloworld.ts
node_modules/@types/node/index.d.ts:815:38 - error TS2304: Cannot find name 'Set'.
815 allowedNodeEnvironmentFlags: Set<string>;
hallowelt.ts
var a:string = "HelloWorld"
console.log(a)
Was soll ich machen?
Fügen Sie "lib": ["es6"]
oder höher hinzu.
Ich habe das gleiche Problem, aber das Hinzufügen der Option lib
in der Datei tsconfig
hat es nicht gelöst.
Schreibmaschinenversion: 3.1.1
Version der Knotentypisierung: 10.11.5
$ mkdir test
$ cd test
$ npm init -y
$ npm install --save-dev typescript @types/node
$ echo 'console.log("test")' > index.ts
$ ./node_modules/.bin/tsc --init
Add lib: "es2015" to tsconfig.json
$ ./node_modules/.bin/tsc index.ts
node_modules/@types/node/index.d.ts:815:38 - error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
815 allowedNodeEnvironmentFlags: Set<string>;
Ich habe mit zahlreichen Leuten darüber gesprochen, wenn lib
es nicht behebt, dann wird irgendwann Ihre tsconfig nicht richtig geladen, bitte stellen Sie sicher, dass die lib zusammen mit der Datei korrekt geladen wird, indem Sie das include
Option files
in tsconfig.json .
@andy-ms soll ich die Set
Änderung rückgängig machen?
Während die Leute wirklich die >es6
lib zur Verwendung mit node verwenden sollten, _könnte_ dies als Breaking Change angesehen werden.
Ich denke, Sie könnten interface Set<T> {}
unter interface SetConstructor {}
in node/index.d.ts
definieren, damit es mit --lib es5
funktioniert.
gleicher Fehler.
☁ jest-codelab [master] ⚡ $(npm bin)/tsc ./src/@types/index.ts
node_modules/@types/node/index.d.ts:815:38 - error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
815 allowedNodeEnvironmentFlags: Set<string>;
~~~
tsconfig.json
:
"lib": ["es2015", "es2016"]
package.json
:
"devDependencies": {
"@types/jest": "^23.3.3",
"@types/node": "^10.11.4",
"jest": "^23.6.0",
"ts-jest": "^23.10.4",
"tslint": "^5.11.0",
"typescript": "^3.1.1"
}
@mrdulin Ich kann sagen, dass Sie nicht das neueste @types/node
installiert haben (derzeit 10.12.0), weil es dort allowedNodeEnvironmentFlags: ReadonlySet<string>;
ist und interface ReadonlySet<T> {}
in @types/node/index.d.ts
deklariert ist
@andy-ms Danke. Nach npm rm @types/node -D
ist dieses Problem verschwunden.
Ich habe das gleiche Problem und ich löse es mit compilerOptions.types
auf meinem tsconfig.json
. Also habe ich im Grunde nur das benötigte @types
-Paket in dieser Eigenschaft aufgeführt.
@rannie-peralta Dieses Problem wurde seit langem behoben, indem eine leere ReadonlySet
-Deklaration durchgeführt wurde.
Ich bin auch auf die gleiche Art von Problem gestoßen.
Paket.json
{
"Name": "Karte",
"Version": "1.0.0",
"Bezeichnung": "",
"main": "index.js",
"Skripte": {
"test": "echo \"Fehler: kein Test angegeben\" && Ausgang 1"
},
"Schlüsselwörter": [],
"Autor": "",
"Lizenz": "ISC",
"Abhängigkeiten": {
"typoskript": "^3.4.5"
}
}
tsconfig.json
{
"compilerOptions": {
"modul": "amd",
"noImplicitAny": wahr,
"esModuleInterop": wahr,
"sourceMap": wahr,
"jsx": "reagieren",
"jsxFactory": "tsx",
"Ziel": "es6",
"experimentalDecorators": wahr,
"preserveConstEnums": wahr,
"suppressImplicitAnyIndexErrors": wahr,
"lib": ["es2015", "es2016"]
},
"enthalten": [
"./src/*"
],
"ausschließen": [
"node_modules"
]
}
index.js
Funktion displayData(){
var meineKarte = neue Karte();
myMap.set("name","xxxxxxxx");
}
Befehl zum Konvertieren in eine js-Datei
tsc.src\index.ts
Fehler :
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the
lib`-Compileroption auf es2015 oder höher.
4 var meineKarte = neue Karte();
~~~
1 Fehler gefunden.`
@ Praveer1981 die Lösung steht buchstäblich in der Fehlermeldung.
Ich bin auf dasselbe Problem gestoßen und war verwirrt, weil meine tsconfig.json genau das hat, was die Fehlermeldung sagt. Eine weitere Änderung meiner tsconfig.json würde das Problem nicht beheben.
Wenn Sie einen Dateipfad an tsc
übergeben, wird tsconfig.json
meines Erachtens ignoriert. Dies ist, was mit mir passiert ist.
tsc src/foo.ts
# führt zu Compiler-Fehlern, die angeben, dass ich meine Bibliothek/mein Ziel aktualisieren soll
tsc
# funktioniert gut, weil meine tsconfig.json ein Ziel von es2015 oder höher spezifiziert hat
Wenn Sie dies also erhalten und Ihre tsconfig.json gut aussieht, überprüfen Sie noch einmal, ob Sie einen benutzerdefinierten Pfad an den Compiler übergeben und möglicherweise Ihre Konfiguration ignorieren.
Hier gilt das gleiche
node_modules/@types/react/index.d.ts:377:23 – Fehler TS2583: Kann den Namen „Set“ nicht finden. Müssen Sie Ihre Zielbibliothek ändern? Versuchen Sie, die Compileroption
lib
auf es2015 oder höher zu ändern.
interactions: Set<SchedulerInteraction>,
Konfig:
{
"compilerOptions": {
"target": "es5",
"target: "es5", // <= doesn't help
"lib": [
"dom",
"dom.iterable",
"esnext",
"es2015", // <= doesn't help
"es6", // <= doesn't help
],
"allowJs": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"sourceMap": true,
"baseUrl": "./",
"jsx": "preserve"
},
"include": [
"./**/*",
"*.tsx"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
Datei, die ich parse, die auslöst:
class Greeter {
public greeting: string;
constructor(msg: string) {
this.greeting = msg;
}
}
let g = new Greeter('hello');
export { Greeter };
Das gleiche hier mit target
und lib
als es6
.
Ich habe es geschafft, dies zu beheben, indem ich @types/[email protected]
installiert habe.
@brunobertoldi
Ja, kann ich bestätigen. Ihre Antwort behebt das Problem.
Hier https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175
@brunobertoldi , ich möchte hinzufügen, dass ich eine Eingabeaufforderung mit Administratorrechten öffnen musste, um diese Eingaben zu installieren, aber sobald ich das getan habe, hat es funktioniert!
Danke dir übrigens.
Danke für die zusätzlichen Details, @thomasio101!
Das gleiche hier mit
target
undlib
alses6
.
Ich habe es geschafft, dies zu beheben, indem ich@types/[email protected]
installiert habe.
ausgezeichnet cool!
Ich würde vorschlagen, der Funktionsweise create-react-app
zu folgen
In den CompilerOptions
...
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
...
Der Inhalt in lib liegt ganz bei Ihnen.
Das gleiche hier mit
target
undlib
alses6
.
Ich habe es geschafft, dies zu beheben, indem ich@types/[email protected]
installiert habe.
Löst das Problem
Hilfreichster Kommentar
Das gleiche hier mit
target
undlib
alses6
.Ich habe es geschafft, dies zu beheben, indem ich
@types/[email protected]
installiert habe.