Saya menggunakan Angular (versi 2) dengan TypeScript (versi 1.6) dan ketika saya mengkompilasi kode saya mendapatkan kesalahan ini:
Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/change_detection/parser/locals.d.ts(4,42): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(1,25): Error TS2304: Cannot find name 'MapConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(2,25): Error TS2304: Cannot find name 'SetConstructor'.
node_modules/angular2/src/core/facade/collection.d.ts(4,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(4,39): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(7,9): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(8,30): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(11,43): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(12,27): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(14,23): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(15,25): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/collection.d.ts(94,41): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(95,22): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/collection.d.ts(96,25): Error TS2304: Cannot find name 'Set'.
node_modules/angular2/src/core/facade/lang.d.ts(1,22): Error TS2304: Cannot find name 'BrowserNodeGlobal'.
node_modules/angular2/src/core/facade/lang.d.ts(33,59): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/facade/promise.d.ts(1,10): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(3,14): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(8,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(9,38): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,35): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(10,93): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(11,34): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,32): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(12,149): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/facade/promise.d.ts(13,43): Error TS2304: Cannot find name 'Promise'.
node_modules/angular2/src/core/linker/element_injector.d.ts(72,32): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(74,17): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(78,184): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(83,182): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/element_injector.d.ts(107,37): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/proto_view_factory.d.ts(27,146): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(52,144): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(76,79): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(77,73): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(94,31): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(97,18): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(100,24): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(103,142): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/linker/view.d.ts(104,160): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/render/api.d.ts(281,74): Error TS2304: Cannot find name 'Map'.
node_modules/angular2/src/core/zone/ng_zone.d.ts(1,37): Error TS2304: Cannot find name 'Zone'.
Ini kodenya:
import 'reflect-metadata';
import {bootstrap, Component, CORE_DIRECTIVES, FORM_DIRECTIVES} from 'angular2/core';
@Component({
selector: 'my-app',
template: '<input type="text" [(ng-model)]="title" /><h1>{{title}}</h1>',
directives: [ CORE_DIRECTIVES ]
})
class AppComponent {
title :string;
constructor() {
this.title = 'hello angular 2';
}
}
bootstrap(AppComponent);
angular
typescript
pengguna233232
sumber
sumber
import {ROUTER_PROVIDERS} from 'angular2/router';
Saya mendapatkan masalah yang sama dan untuk beberapa alasan ini memperbaikinya untuk saya ...?!?Jawaban:
Masalah yang diketahui: https://github.com/angular/angular/issues/4902
Alasan inti:
.d.ts
file yang secara implisit disertakan oleh TypeScript bervariasi dengan target kompilasi, jadi orang perlu memiliki deklarasi ambient yang lebih banyak ketika menargetkanes5
bahkan jika ada hal-hal yang sebenarnya ada di runtimes (mis. Chrome). Lebih lanjut tentanglib.d.ts
sumber
Ada solusi yang disebutkan di changelog untuk 2.0.0-beta.6 (2016-02-11) (tercantum di bawah perubahan yang berubah):
pastikan Anda memiliki jalur referensi yang benar, saya perlu menambahkan ../ ke awal agar ini berfungsi.
sumber
TS2304: Cannot find name 'module'
danTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Ada ide?Fitur ES6 seperti janji tidak ditentukan saat menargetkan ES5. Ada perpustakaan lain, tetapi core-js adalah perpustakaan javascript yang digunakan tim Angular. Ini berisi polyfill untuk ES6.
Angular 2 telah banyak berubah sejak pertanyaan ini diajukan. Deklarasi tipe jauh lebih mudah digunakan di dalam Script 2.0.
Untuk fitur ES6 di Angular 2, Anda tidak perlu Mengetik. Cukup gunakan skrip 2.0 atau lebih tinggi dan instal @ types / core-js dengan npm:
Kemudian, tambahkan atribut TypeRoots dan Type ke tsconfig.json Anda:
Ini jauh lebih mudah daripada menggunakan Typing, seperti yang dijelaskan dalam jawaban lain. Lihat posting blog Microsoft untuk informasi lebih lanjut: Skrip: The Future of Declaration Files
sumber
typeRoots
jika satu-satunya entri yang Anda miliki adalahnode_modules/@types
.TypeRoots
danTypes
untuk tsconfig.json. Dalam kasus saya, saya juga harus memperbarui plugin Gulp-typescript 2.x Gulp saya yang ditranspilasikan menggunakan dan menyematkan versi dari TypeScript 1, tetapi begitu saya memperbarui jadi saya menggunakan TypeScript 2 dan menambahkan @ types / core-js polyfill. set. Terimakasih banyak.Bagi mereka yang mengikuti tutorial Angular2 pada
angular.io
hanya untuk menjadi eksplisit, berikut ini adalah perluasan jawaban mvdluit tentang di mana tepatnya meletakkan kode:Anda
main.ts
akan terlihat seperti ini:Perhatikan bahwa Anda membiarkan
///
garis miring ke depan, jangan hapus.ref: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
sumber
_references.js
dalamnya tidak akan berfungsi. Harus di dalam komponen seperti yang disarankan jawaban ini. Selain itu, gunakan../../
sebagai ganti../
untuk jalur.browser.d.ts
folder pengetikan. Hanya.js
file di bawahdist
. Ada file bernamatypings.d.ts
jadi saya pikir itu yang baru, tetapi tidak menyelesaikan masalah. Membangun untuk 'es6' berfungsi, tetapi IE mengeluh. Sangat macet dengan build 'es5' dan tanpa mengetik! : /npm install -g typings typings install
.d.ts
dari paket pengetikan. Juga untuk memenuhi persyaratan IE9 +, harus membangun untuk es3.Saya dapat memperbaiki ini dengan perintah berikut
Perhatikan bahwa Anda perlu
typings
membuat perintah di atas berfungsi, jika Anda belum menjalankan perintah berikut untuk menginstalnyaMEMPERBARUI
pembaruan pengetikan tidak membacanya
--ambient
menjadi--global
juga untuk beberapa orang Anda perlu menginstal definisi perpustakaan di atas, cukup gunakan perintah berikutTerima kasih kepada @bgerth karena menunjukkan ini.
sumber
typings install dt~es6-promise dt~es6-collections --global --save
typings
pembaruan, saya akan menambahkan solusi Anda untuk jawabannyaKetika memiliki Typescript> = 2 opsi "lib" di tsconfig.json akan melakukan pekerjaan itu. Tidak perlu mengetik. https://www.typescriptlang.org/docs/handbook/compiler-options.html
sumber
Untuk
Angular 2.0.0-rc.0
menambahkannode_modules/angular2/typings/browser.d.ts
tidak akan berhasil. Pertama tambahkan file typings.json ke solusi Anda, dengan konten ini:Dan kemudian perbarui
package.json
file untuk menyertakan inipostinstall
:Sekarang jalankan
npm install
Juga sekarang Anda harus mengabaikan
typings
folder ditsconfig.json
file Anda juga:Memperbarui
Sekarang AngularJS 2.0 menggunakan
core-js
alih-alihes6-shim
. Ikuti file typings.json mulai cepat untuk info lebih lanjut.sumber
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769Anda dapat menambahkan kode di awal file .ts.
sumber
Saya mendapatkan ini di Angular 2 rc1. Ternyata beberapa nama diubah dengan ketikkan v1 vs yang lama 0.x. The
browser.d.ts
file menjadiindex.d.ts
.Setelah berlari
typings install
temukan file startup Anda (tempat Anda bootstrap) dan tambahkan:/// <reference path="../typings/index.d.ts" />
(atau tanpa../
file startup Anda di folder yang sama dengan folder pengetikan)Menambahkan
index.d.ts
ke daftar file ditsconfig.json
tidak berfungsi karena suatu alasan.Juga,
es6-shim
paket itu tidak diperlukan.sumber
Saya dapat memperbaikinya dengan menginstal
typings
modul.(Menggunakan ng 2.0.0-rc.1)
sumber
Saya memiliki masalah yang sama dan saya menyelesaikannya menggunakan
lib
opsi ditsconfig.json
. Seperti yang dikatakan oleh basarat dalam jawabannya , sebuah.d.ts
file secara implisit disertakan oleh TypeScript tergantung padatarget
opsi kompilasi tetapi perilaku ini dapat diubah denganlib
opsi tersebut.Anda dapat menentukan file definisi tambahan untuk dimasukkan tanpa mengubah versi JS yang ditargetkan. Sebagai contoh, ini adalah bagian dari arus saya
compilerOptions
untuk [email protected] dan menambahkan dukungan untukes2015
fitur tanpa menginstal apa pun:Untuk daftar lengkap opsi yang tersedia, periksa dokumen resmi .
Perhatikan juga bahwa saya menambahkan
"types": ["node"]
dan menginstalnpm install @types/node
untuk mendukungrequire('some-module')
kode saya.sumber
dan tambahkan jalur yang benar ke index.d.ts
Mencoba di @ angular-2.0.0-rc3
sumber
Jika
npm install -g typings typings install
masih tidak membantu, hapus node_modules dan ketikkan folder sebelum menjalankan perintah ini.sumber
Inilah yang berpikir bagaimana setiap orang mencoba melakukan sesuatu yang berbeda. Saya percaya sistem ini masih jauh dari versi final.
Dalam kasus saya, saya memperbarui dari rc.0 ke rc.5 kesalahan ini muncul.
Perbaikan saya adalah mengubah tsconfig.json.
sumber
"lib"
, tidak"target"
.tambahkan typing.d.ts di folder utama aplikasi dan di sana mendeklarasikan variabel yang ingin Anda gunakan setiap saat
setelah mendeklarasikan ini di typing.d.ts, kesalahan untuk meminta tidak akan datang dalam aplikasi ..
sumber
Saya baru mengenal Angular tetapi bagi saya solusinya ditemukan hanya dengan mengimpor Input. Tidak dapat menerima kredit untuk yang ini, menemukannya di papan lain. Ini adalah perbaikan sederhana jika Anda mengalami masalah yang sama tetapi jika masalah Anda lebih kompleks, saya akan membaca hal-hal di atas.
Mukesh :
sumber
Saya menemukan dokumen yang sangat membantu ini di situs web Angular 2. Akhirnya membiarkan saya bekerja dengan benar, sedangkan jawaban lain di sini, untuk menginstal mengetik, gagal saya dengan berbagai kesalahan (Tapi membantu membawaku ke arah yang benar.)
Alih-alih termasuk es6-janji dan es6-koleksi, itu termasuk core-js, yang melakukan trik untuk saya ... tidak ada konflik dengan definisi inti ts Angular2. Selain itu dokumen tersebut menjelaskan cara mengatur semua ini agar terjadi secara otomatis ketika menginstal NPM, dan bagaimana memodifikasi file typings.json Anda.
sumber
Angular 2 RC1 mengubah nama
node_modules/angular2
direktori menjadinode_modules/angular
.Jika Anda menggunakan gulpfile untuk menyalin file ke direktori keluaran, Anda mungkin masih
node_modules/angular
duduk di sana yang mungkin diambil oleh kompiler dan membingungkannya sendiri.Jadi (hati-hati) hapus apa yang Anda miliki di
node_modules
dalamnya untuk versi beta, dan hapus juga semua pengetikan lama dan jalankan kembalitypings install
.sumber
Panggilan bagus, @VahidN, saya merasa perlu
Dalam saya
tsconfig
juga, untuk menghentikan kesalahan daries6-shim
dirinya sendirisumber
Impor pernyataan di bawah ini dalam file JS Anda.
sumber
import './rxjs-extensions';
ke sayaapp.component.ts
dengan file rxjs-extensions dari tutorial angular2 (termasuk baris yang Anda sarankan) dan tampaknya telah menghapus kesalahan-kesalahan itu.Jawaban yang diterima tidak memberikan perbaikan yang layak, dan sebagian besar yang lain menyarankan solusi "triple-slash" yang tidak layak lagi, karena
browser.d.ts
telah dihapus oleh RC terbaru Angular2 dan dengan demikian tidak tersedia lagi.Saya sangat menyarankan untuk menginstal
typings
modul seperti yang disarankan oleh beberapa solusi di sini, namun itu tidak perlu dilakukan secara manual atau global - ada cara yang efektif untuk melakukannya untuk proyek Anda saja dan dalam antarmuka VS2015. Inilah yang perlu Anda lakukan:typings
file package.json proyek.script
blok dipackage.json
file untuk menjalankan / memperbaruitypings
setelah setiap aksi NPM.typings.json
file di folder root proyek yang berisi referensicore-js
(secara keseluruhan lebih baik daripadaes6-shim
atm).Itu dia.
Anda juga dapat melihat utas SO lainnya ini dan / atau membaca posting ini di blog saya untuk detail tambahan.
sumber
Saya mendapatkan kesalahan ini setelah menggabungkan cabang dev saya ke cabang saya saat ini. Saya menghabiskan beberapa waktu untuk memperbaiki masalah ini. Seperti yang Anda lihat pada gambar di bawah, tidak ada masalah dalam kode sama sekali.
Jadi satu-satunya perbaikan yang berhasil bagi saya adalah Restart VSCode
sumber
Sekarang Anda harus mengimpornya secara manual.
sumber
Perbarui
tsconfig.json
, ubahuntuk
sumber