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>;
helloworld.ts
var a:string = "HelloWorld"
console.log(a)
O que devo fazer?
Adicione "lib": ["es6"]
ou superior.
Estou com o mesmo problema, mas adicionar a opção lib
no arquivo tsconfig
não resolveu.
Versão datilografada: 3.1.1
Versão de tipagens de nós: 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>;
Conversei com várias pessoas sobre isso, se lib
não corrigir, em algum momento seu tsconfig não está sendo carregado corretamente, por favor, certifique-se de que a lib esteja sendo carregada corretamente junto com o arquivo usando o include
ou files
opção no tsconfig.json .
@andy-ms devo reverter a mudança Set
?
Enquanto as pessoas realmente deveriam estar usando o >es6
lib para uso com o nó, isso _poderia_ ser visto como uma mudança importante.
Acho que você poderia definir interface Set<T> {}
abaixo interface SetConstructor {}
em node/index.d.ts
para que funcione com --lib es5
.
mesmo 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 Posso dizer que você não tem o mais recente @types/node
instalado (atualmente 10.12.0), porque lá está allowedNodeEnvironmentFlags: ReadonlySet<string>;
e interface ReadonlySet<T> {}
está declarado em @types/node/index.d.ts
.
@andy-ms Obrigado. Depois de npm rm @types/node -D
, esse problema desapareceu.
Eu tenho o mesmo problema e resolvo usando compilerOptions.types
no meu tsconfig.json
. Então, basicamente, eu listei apenas o pacote @types
necessário nessa propriedade.
@rannie-peralta esse problema foi corrigido há muito tempo fazendo uma declaração ReadonlySet
vazia.
Eu também encontrei o mesmo tipo de problema.
pacote.json
{
"nome": "mapa",
"versão": "1.0.0",
"Descrição": "",
"main": "index.js",
"roteiros": {
"test": "echo \"Erro: nenhum teste especificado\" && exit 1"
},
"palavras-chave": [],
"autor": "",
"licença": "ISC",
"dependências": {
"datilografado": "^3.4.5"
}
}
tsconfig.json
{
"compilerOptions": {
"módulo": "amd",
"noImplicitAny": verdadeiro,
"esModuleInterop": verdadeiro,
"sourceMap": verdadeiro,
"jsx": "reagir",
"jsxFactory": "tsx",
"alvo": "es6",
"experimentalDecorators": true,
"preserveConstEnums": true,
"suppressImplicitAnyIndexErrors": true,
"lib": ["es2015", "es2016"]
},
"incluir": [
"./src/*"
],
"excluir": [
"node_modules"
]
}
index.js
função displayData(){
var meuMapa = new Mapa();
meuMapa.set("nome","xxxxxxxx");
}
comando para converter em arquivo js
tsc .src\index.ts
Erro:
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the
opção do compilador lib` para es2015 ou posterior.
4 var meuMapa = new Mapa();
~~~
1 erro encontrado.`
@ Praveer1981 a solução está literalmente na mensagem de erro.
Me deparei com esse mesmo problema e fiquei confuso porque meu tsconfig.json tem exatamente o que a mensagem de erro diz para fazer. Modificar ainda mais meu tsconfig.json não resolveria o problema.
Quando você passa um caminho de arquivo para tsc
, acredito que o tsconfig.json
seja ignorado. Isto é o que estava acontecendo comigo.
tsc src/foo.ts
# resulta em erros do compilador informando para atualizar minha lib/target
tsc
# funciona bem porque meu tsconfig.json estava especificando um destino de es2015 ou posterior
Então, se você está recebendo isso e seu tsconfig.json parece bom, verifique novamente se você está passando um caminho personalizado para o compilador e potencialmente ignorando sua configuração.
Mesmo aqui
node_modules/@types/react/index.d.ts:377:23 - erro TS2583: Não é possível encontrar o nome 'Set'. Você precisa alterar sua biblioteca de destino? Tente alterar a opção do compilador
lib
para es2015 ou posterior.
interactions: Set<SchedulerInteraction>,
Configuração:
{
"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"
]
}
Arquivo que analiso que lança:
class Greeter {
public greeting: string;
constructor(msg: string) {
this.greeting = msg;
}
}
let g = new Greeter('hello');
export { Greeter };
O mesmo aqui com target
e lib
como es6
.
Eu consegui consertar isso instalando @types/[email protected]
.
@brunobertoldi
Sim, posso confirmar. Sua resposta corrige o problema.
Aqui https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175
@brunobertoldi , gostaria de acrescentar a isso que tive que abrir um prompt com privilégios de administrador para instalar essas digitações, mas depois que fiz, funcionou!
Obrigado, aliás.
Obrigado pelos detalhes adicionais, @thomasio101!
O mesmo aqui com
target
elib
comoes6
.
Eu consegui consertar isso instalando@types/[email protected]
.
excelente legal!
Sugiro seguir a maneira create-react-app
funciona
Dentro do compiladorOptions
...
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
...
O conteúdo da lib depende totalmente de você.
O mesmo aqui com
target
elib
comoes6
.
Eu consegui consertar isso instalando@types/[email protected]
.
Resolve o problema
Comentários muito úteis
O mesmo aqui com
target
elib
comoes6
.Eu consegui consertar isso instalando
@types/[email protected]
.