Saya benar-benar pemula dalam Ketikan dan bertanya-tanya apakah mungkin menggunakan janji ES6 di Ketikan dan apa yang harus saya lakukan untuk membuatnya berfungsi. Saya menjalankan node 0.11.14 dan mendapatkan error selama kompilasi "Tidak dapat menemukan nama 'Janji'"
javascript
typescript
es6-promise
dchang
sumber
sumber
es6-promise
Jawaban:
Lib.d.ts saat ini tidak memiliki promise di dalamnya sehingga Anda memerlukan file definisi tambahan untuk itu, itulah sebabnya Anda mendapatkan kesalahan kompilasi.
Anda bisa misalnya menggunakan (seperti @elclanrs mengatakan) menggunakan paket es6-promise dengan file definisi dari DefinitelyTyped: es6-promise definition
Anda kemudian dapat menggunakannya seperti ini:
edit Anda dapat menggunakannya tanpa definisi saat menargetkan ES6 (dengan compiler TypeScript) - Perhatikan bahwa Anda masih memerlukan Promise untuk ada di runtime ofcourse (sehingga tidak akan berfungsi di browser lama :)) Tambahkan / Edit berikut ini ke
tsconfig.json
:edit 2 Ketika TypeScript 2.0 akan keluar, hal-hal akan berubah sedikit (meskipun di atas masih berfungsi) tetapi file definisi dapat diinstal langsung dengan npm seperti di bawah ini:
npm install --save @types/es6-promise
- sumberedit3 Memperbarui jawaban dengan lebih banyak info untuk menggunakan tipe.
Buat
package.json
file dengan hanya{ }
sebagai isinya (jika Anda belum memiliki package.json. Panggilnpm install --save @types/es6-promise
dantsc --init
. Perintah npm install pertama akan mengubah Andapackage.json
untuk menyertakan es6-promise sebagai dependensi. Tsc --init akan membuattsconfig.json
file untukmu.Sekarang Anda dapat menggunakan promise dalam file skrip Anda
var x: Promise<any>;
. Jalankantsc -p .
untuk mengompilasi proyek Anda. Anda seharusnya tidak memiliki kesalahan.sumber
--save-dev
harus digunakan sebagai pengganti--save
, karena perpustakaan hanya digunakan pada waktu kompilasi.Alternatif # 1
Gunakan opsi
target
danlib
kompiler untuk mengkompilasi langsung kees5
tanpa perlu menginstales6-shim
. (Diuji dengan TypeScript2.1.4
). Di bagian lib, gunakan salah satues2016
ataues2015.promise
.Alternatif # 2
Gunakan NPM untuk menginstal yang
es6-shim
dari organisasi jenis .Alternatif # 3
Sebelum TypeScript 2.0, gunakan pengetikan untuk menginstal
es6-shim
secara global dari DefinitelyTyped .The
typings
pilihan menggunakannpm
untuk menginstaltypings
secara global dan kemudian menggunakantypings
untuk menginstal shim. Thedt~
awalan berarti untuk men-download shim dari DefinitelyTyped. The--global
berarti pilihan itu jenis shim akan tersedia di seluruh proyek.Lihat juga
https://github.com/Microsoft/TypeScript/issues/7788 - Tidak dapat menemukan nama 'Promise' & Tidak dapat menemukan nama 'memerlukan'
sumber
es2016
bukanlah ide yang baik kecuali target Anda mendukung ES2016. Ada banyak browser yang mendukung promise tetapi tidak semuanya di ES2016. Gunakanes2015.promise
untuk menyertakan hanya tipe untuk promise tanpa menarik jenis untuk semuanya di ES2016.Mulai TypeScript 2.0 Anda dapat memasukkan pengetikan untuk janji asli dengan menyertakan yang berikut ini di file
tsconfig.json
Ini akan mencakup deklarasi janji yang disertakan dengan TypeScript tanpa harus menyetel target ke ES6.
sumber
Jika Anda menggunakan node.js 0.12 atau lebih tinggi / typescript 1.4 atau lebih tinggi, cukup tambahkan opsi compiler seperti:
Info selengkapnya: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
Jika Anda menggunakan
tsconfig.json
, maka seperti ini:Info selengkapnya: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
sumber
Ini cara terbaru untuk melakukan ini, jawaban di atas sudah usang:
typings install --global es6-promise
sumber
Menggunakan asli janji ES6 dengan skrip di Visual Studio 2015 + alat Node.js 1.2
Tidak diperlukan instalasi npm karena ES6 Promises adalah native.
Proyek Node.js -> Properti -> Tab Bangun Typecript Versi ECMAScript = ECMAScript6
sumber
"target": "es5"
A.Jika menggunakan dan TypeScript versi di bawah 2.0:"target": "es5"
B.Jika menggunakan dan TypeScript versi 2.0 atau lebih tinggi:C. Jika menggunakan
"target": "es6"
, tidak perlu melakukan apa pun.sumber
"target": "es6"
dengan TypeScript 2.1.1 dan saya masih mendapatkannyaCannot find name 'Promise'
.Saya harus menurunkan versi
@types/core-js
ke 9.36 untuk membuatnya berfungsi dengan"target": "es5"
set di tsconfig saya."@types/core-js": "0.9.36",
sumber