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)
Apa yang harus saya lakukan?
Tambahkan "lib": ["es6"]
atau lebih tinggi.
Saya mengalami masalah yang sama, tetapi menambahkan opsi lib
pada file tsconfig
tidak menyelesaikannya.
Versi TypeScript: 3.1.1
Versi pengetikan simpul: 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>;
Saya berbicara dengan banyak orang tentang ini, jika lib
tidak memperbaikinya maka pada titik tertentu tsconfig Anda tidak dimuat dengan benar, harap pastikan bahwa lib dimuat dengan benar bersama-sama dengan file menggunakan include
atau files
opsi di tsconfig.json .
@andy-ms haruskah saya mengembalikan perubahan Set
?
Sementara orang benar-benar harus menggunakan lib >es6
untuk digunakan dengan simpul, ini _bisa_ dilihat sebagai perubahan yang melanggar.
Saya pikir Anda dapat mendefinisikan interface Set<T> {}
di bawah interface SetConstructor {}
di node/index.d.ts
sehingga akan bekerja dengan --lib es5
.
masalah yang sama.
☁ 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 Saya dapat memberitahu Anda tidak menginstal @types/node
terbaru (saat ini 10.12.0), karena di sana allowedNodeEnvironmentFlags: ReadonlySet<string>;
dan interface ReadonlySet<T> {}
dideklarasikan dalam @types/node/index.d.ts
.
@andy-ms Terima kasih. Setelah npm rm @types/node -D
, masalah ini hilang.
Saya memiliki masalah yang sama dan saya menyelesaikannya menggunakan compilerOptions.types
pada tsconfig.json
saya. Jadi pada dasarnya saya hanya mencantumkan paket @types
yang dibutuhkan di properti itu.
@rannie-peralta masalah ini telah lama diperbaiki dalam tipe dengan melakukan deklarasi ReadonlySet
kosong.
Saya juga mengalami masalah yang sama.
package.json
{
"nama": "peta",
"versi": "1.0.0",
"keterangan": "",
"utama": "index.js",
"skrip": {
"test": "echo \"Kesalahan: tidak ada tes yang ditentukan\" && keluar 1"
},
"kata kunci": [],
"Pengarang": "",
"lisensi": "ISC",
"ketergantungan": {
"ketik": "^3.4.5"
}
}
tsconfig.json
{
"compilerOptions": {
"modul": "amd",
"noImplicitAny": benar,
"esModuleInterop": benar,
"sourceMap": benar,
"jsx": "bereaksi",
"jsxFactory": "tsx",
"target": "es6",
"experimentalDecorators": benar,
"preserveConstEnums": benar,
"suppressImplicitAnyIndexErrors": benar,
"lib": ["es2015", "es2016"]
},
"termasuk": [
"./src/*"
],
"mengecualikan": [
"simpul_modul"
]
}
index.js
fungsi tampilanData(){
var myMap = Peta baru();
myMap.set("nama","xxxxxxxx");
}
perintah untuk mengubah menjadi file js
tsc .src\index.ts
Kesalahan:
src/index.ts:4:21 - error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the
opsi kompiler lib` ke es2015 atau lebih baru.
4 var myMap = Peta baru();
~~~
Ditemukan 1 kesalahan.`
@Praveer1981 solusinya secara harfiah ada di pesan kesalahan.
Saya menemukan masalah yang sama dan bingung karena tsconfig.json saya memiliki persis apa yang dikatakan pesan kesalahan. Memodifikasi tsconfig.json saya lebih lanjut tidak akan memperbaiki masalah.
Saat Anda meneruskan jalur file ke tsc
, saya yakin tsconfig.json
diabaikan. Inilah yang terjadi pada saya.
tsc src/foo.ts
# menghasilkan kesalahan kompiler yang menyatakan untuk memutakhirkan lib/target saya
tsc
# berfungsi dengan baik karena tsconfig.json saya menetapkan target es2015 atau lebih baru
Jadi, jika Anda mendapatkan ini dan tsconfig.json Anda terlihat bagus, periksa kembali apakah Anda meneruskan jalur khusus ke kompiler, dan berpotensi mengabaikan konfigurasi Anda.
Sama disini
node_modules/@types/react/index.d.ts:377:23 - kesalahan TS2583: Tidak dapat menemukan nama 'Set'. Apakah Anda perlu mengubah perpustakaan target Anda? Coba ubah opsi kompiler
lib
menjadi es2015 atau yang lebih baru.
interactions: Set<SchedulerInteraction>,
Konfigurasi:
{
"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"
]
}
File yang saya urai yang melempar:
class Greeter {
public greeting: string;
constructor(msg: string) {
this.greeting = msg;
}
}
let g = new Greeter('hello');
export { Greeter };
Sama di sini dengan target
dan lib
sebagai es6
.
Saya telah berhasil memperbaikinya dengan menginstal @types/[email protected]
.
@brunobertoldi
Ya, saya bisa mengkonfirmasi. Jawaban Anda memperbaiki masalah.
Di sini https://github.com/DefinitelyTyped/DefinitelyTyped/issues/29172#issuecomment -527708175
@brunobertoldi , saya ingin menambahkan ini bahwa saya harus membuka Prompt dengan hak administrator untuk menginstal pengetikan ini, tetapi begitu saya melakukannya, itu berhasil!
Terima kasih, omong-omong.
Terima kasih atas detail tambahannya, @thomasio101!
Sama di sini dengan
target
danlib
sebagaies6
.
Saya telah berhasil memperbaikinya dengan menginstal@types/[email protected]
.
luar biasa keren!
Saya akan menyarankan untuk mengikuti cara kerja create-react-app
Di dalam compilerOptions
...
"skipLibCheck": true,
"lib": [
"dom",
"dom.iterable",
"esnext"
],
...
Konten di lib sepenuhnya terserah Anda.
Sama di sini dengan
target
danlib
sebagaies6
.
Saya telah berhasil memperbaikinya dengan menginstal@types/[email protected]
.
Memecahkan masalah
Komentar yang paling membantu
Sama di sini dengan
target
danlib
sebagaies6
.Saya telah berhasil memperbaikinya dengan menginstal
@types/[email protected]
.