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>;
привет мир.тс
var a:string = "HelloWorld"
console.log(a)
Что я должен делать?
Добавьте "lib": ["es6"]
или выше.
У меня та же проблема, но добавление опции lib
tsconfig
не решило ее.
Версия машинописного текста: 3.1.1
Версия типов узлов: 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>;
Я говорил об этом со многими людьми, если lib
не исправляет это, значит, в какой-то момент ваш tsconfig загружается неправильно, убедитесь, что библиотека правильно загружается вместе с файлом, используя include
Параметр files
в tsconfig.json .
@andy-ms, должен ли я отменить изменение Set
?
Хотя людям действительно следует использовать библиотеку >es6
для использования с узлом, это _можно_ рассматривать как критическое изменение.
Я думаю, вы могли бы определить interface Set<T> {}
ниже interface SetConstructor {}
в node/index.d.ts
, чтобы он работал с --lib es5
.
такая же проблема.
☁ 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 Я могу сказать, что у вас не установлена последняя версия @types/node
(в настоящее время 10.12.0), потому что там allowedNodeEnvironmentFlags: ReadonlySet<string>;
, а interface ReadonlySet<T> {}
объявлено в @types/node/index.d.ts
.
@ andy-ms Спасибо. После npm rm @types/node -D
эта проблема исчезла.
У меня такая же проблема, и я решаю ее, используя compilerOptions.types
на моем tsconfig.json
. Так что в основном я перечислил только необходимый пакет @types
в этом свойстве.
@rannie-peralta эта проблема уже давно исправлена в типе путем создания пустого объявления ReadonlySet
.
Я тоже столкнулся с такой же проблемой.
пакет.json
{
"имя": "карта",
"версия": "1.0.0",
"описание": "",
«основной»: «index.js»,
"скрипты": {
"test": "echo \"Ошибка: тест не указан\" && выход 1"
},
"ключевые слова": [],
"автор": "",
"лицензия": "ISC",
"зависимости": {
"машинопись": "^3.4.5"
}
}
tsconfig.json
{
"Параметры компилятора": {
"модуль": "амд",
"noImplicitAny": правда,
"esModuleInterop": правда,
"исходная карта": правда,
"jsx": "реагировать",
"jsxFactory": "tsx",
"цель": "es6",
"experimentalDecorators": правда,
"preserveConstEnums": правда,
"suppressImplicitAnyIndexErrors": правда,
"lib": ["es2015", "es2016"]
},
"включать": [
"./источник/*"
],
"исключать": [
"узловые_модули"
]
}
index.js
функция отображения данных () {
var myMap = новая карта();
myMap.set("имя","хххххххх");
}
команда для преобразования в файл js
tsc .src\index.ts
Ошибка :
Опция компилятораsrc/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the
lib` для es2015 или более поздней версии.
4 var myMap = новая карта();
~~~
Найдена 1 ошибка.`
@ Praveer1981 решение буквально в сообщении об ошибке.
Я столкнулся с этой же проблемой и был сбит с толку, потому что мой tsconfig.json имеет именно то, что говорит сообщение об ошибке. Дальнейшее изменение моего tsconfig.json не решит проблему.
Когда вы передаете путь к файлу tsc
, я считаю, что tsconfig.json
игнорируется. Это то, что происходило со мной.
tsc src/foo.ts
# приводит к ошибкам компилятора с указанием обновить мою библиотеку/цель
tsc
# работает нормально, потому что мой tsconfig.json указывал цель es2015 или новее
Поэтому, если вы получаете это, и ваш tsconfig.json выглядит хорошо, дважды проверьте, передаете ли вы пользовательский путь компилятору и, возможно, игнорируете свою конфигурацию.
То же самое
node_modules/@types/react/index.d.ts:377:23 — ошибка TS2583: не удается найти имя «Set». Вам нужно изменить целевую библиотеку? Попробуйте изменить параметр компилятора
lib
на es2015 или более позднюю версию.
interactions: Set<SchedulerInteraction>,
Конфигурация:
{
"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"
]
}
Файл, который я разбираю, выдает:
class Greeter {
public greeting: string;
constructor(msg: string) {
this.greeting = msg;
}
}
let g = new Greeter('hello');
export { Greeter };
То же самое здесь с target
и lib
как es6
.
Мне удалось исправить это, установив @types/[email protected]
.
@брунобертолди
Да, я могу подтвердить. Ваш ответ исправляет проблему.
Здесь https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175
@brunobertoldi , я хотел бы добавить к этому, что мне пришлось открыть приглашение с правами администратора, чтобы установить эти типы, но как только я это сделал, это сработало!
Спасибо, кстати.
Спасибо за дополнительные подробности, @thomasio101!
То же самое здесь с
target
иlib
какes6
.
Мне удалось исправить это, установив@types/[email protected]
.
отлично круто!
Я бы посоветовал следовать тому, как работает create-react-app
Внутри параметров компилятора
...
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
...
Контент в lib полностью зависит от вас.
То же самое здесь с
target
иlib
какes6
.
Мне удалось исправить это, установив@types/[email protected]
.
Решает проблему
Самый полезный комментарий
То же самое здесь с
target
иlib
какes6
.Мне удалось исправить это, установив
@types/[email protected]
.