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>;
holamundo.ts
var a:string = "HelloWorld"
console.log(a)
¿Qué tengo que hacer?
Agrega "lib": ["es6"]
o superior.
Tengo el mismo problema, pero agregar la opción lib
en el archivo tsconfig
no lo resolvió.
Versión mecanografiada: 3.1.1
Versión de tipificación de nodos: 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>;
Hablé con muchas personas sobre esto, si lib
no lo soluciona, en algún momento su tsconfig no se está cargando correctamente, asegúrese de que la lib se esté cargando correctamente junto con el archivo usando include
opción files
en tsconfig.json .
@andy-ms, ¿debería revertir el cambio Set
?
Si bien la gente realmente debería usar la >es6
para usarla con el nodo, esto _podría_ verse como un cambio importante.
Creo que podría definir interface Set<T> {}
por debajo interface SetConstructor {}
en node/index.d.ts
para que funcione con --lib es5
.
mismo problema
☁ 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 , puedo decir que no tiene instalado el último @types/node
(actualmente 10.12.0), porque allí está allowedNodeEnvironmentFlags: ReadonlySet<string>;
y interface ReadonlySet<T> {}
está declarado en @types/node/index.d.ts
.
@andy-ms Gracias. Después npm rm @types/node -D
, este problema desaparece.
Tengo el mismo problema y lo resuelvo usando compilerOptions.types
en mi tsconfig.json
. Básicamente, solo enumeré el paquete @types
necesario en esa propiedad.
@rannie-peralta, este problema se solucionó durante mucho tiempo al hacer una declaración vacía ReadonlySet
.
Yo también encontré el mismo tipo de problema.
paquete.json
{
"nombre": "mapa",
"versión": "1.0.0",
"descripción": "",
"principal": "index.js",
"guiones": {
"prueba": "echo \"Error: no se especificó ninguna prueba\" && exit 1"
},
"palabras clave": [],
"autor": "",
"licencia": "ISC",
"dependencias": {
"mecanografiado": "^3.4.5"
}
}
tsconfig.json
{
"Opciones del compilador": {
"módulo": "amd",
"noImplicitAny": cierto,
"esModuleInterop": verdadero,
"sourceMap": cierto,
"jsx": "reaccionar",
"jsxFactory": "tsx",
"objetivo": "es6",
"Decoradores experimentales": cierto,
"preservarConstEnums": verdadero,
"suppressImplicitAnyIndexErrors": verdadero,
"lib": ["es2015", "es2016"]
},
"incluir": [
"./origen/*"
],
"excluir": [
"módulos_nodos"
]
}
índice.js
función mostrarDatos(){
var miMapa = nuevo Mapa();
miMapa.set("nombre","xxxxxxxx");
}
comando para convertir en archivo js
tsc .src\index.ts
Error :
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the
opción del compilador lib` para es2015 o posterior.
4 var miMapa = nuevo Mapa();
~~~
Encontrado 1 error.`
@ Praveer1981 , la solución está literalmente en el mensaje de error.
Encontré este mismo problema y estaba confundido porque mi tsconfig.json tiene exactamente lo que dice el mensaje de error. Modificar más mi tsconfig.json no solucionaría el problema.
Cuando pasa una ruta de archivo a tsc
, creo que se ignora el tsconfig.json
. Esto es lo que me estaba pasando.
tsc src/foo.ts
# da como resultado errores del compilador que indican actualizar mi lib/objetivo
tsc
# funciona bien porque mi tsconfig.json estaba especificando un objetivo de es2015 o posterior
Entonces, si obtiene esto y su tsconfig.json se ve bien, verifique dos veces si está pasando una ruta personalizada al compilador y posiblemente ignorando su configuración.
Aquí igual
node_modules/@types/react/index.d.ts:377:23 - error TS2583: No se puede encontrar el nombre 'Set'. ¿Necesita cambiar su biblioteca de destino? Intente cambiar la opción del compilador
lib
a es2015 o posterior.
interactions: Set<SchedulerInteraction>,
Configuración:
{
"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"
]
}
Archivo que analizo que arroja:
class Greeter {
public greeting: string;
constructor(msg: string) {
this.greeting = msg;
}
}
let g = new Greeter('hello');
export { Greeter };
Lo mismo aquí con target
y lib
como es6
.
Logré solucionar esto instalando @types/[email protected]
.
@brunobertoldi
Sí, puedo confirmar. Tu respuesta soluciona el problema.
Aquí https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175
@brunobertoldi , me gustaría agregar a esto que tuve que abrir un aviso con privilegios de administrador para instalar estos tipos, pero una vez que lo hice, ¡funcionó!
Gracias por cierto.
¡Gracias por los detalles adicionales, @thomasio101!
Lo mismo aquí con
target
ylib
comoes6
.
Logré solucionar esto instalando@types/[email protected]
.
excelente genial!
Sugeriría seguir la forma en que funciona create-react-app
Dentro de las opciones del compilador
...
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
...
El contenido de lib depende totalmente de usted.
Lo mismo aquí con
target
ylib
comoes6
.
Logré solucionar esto instalando@types/[email protected]
.
Resuelve el problema
Comentario más útil
Lo mismo aquí con
target
ylib
comoes6
.Logré solucionar esto instalando
@types/[email protected]
.