J'utilise Angular (version 2) avec TypeScript (version 1.6) et lorsque je compile le code, j'obtiens ces erreurs:
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'.
Voici le code:
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
user233232
la source
la source
import {ROUTER_PROVIDERS} from 'angular2/router';
je reçois le même problème et pour une raison quelconque, cela le résout pour moi ...?!?Réponses:
Un problème connu: https://github.com/angular/angular/issues/4902
Raison principale: le
.d.ts
fichier implicitement inclus par TypeScript varie avec la cible de compilation, donc il faut avoir plus de déclarations ambiantes lors du ciblagees5
même si des choses sont réellement présentes dans les runtimes (par exemple chrome). Plus surlib.d.ts
la source
Il existe une solution de contournement mentionnée dans le journal des modifications pour 2.0.0-beta.6 (2016-02-11) (répertoriée sous les changements de rupture):
assurez-vous d'avoir le bon chemin de référence, j'avais besoin d'ajouter ../ au début pour que cela fonctionne.
la source
TS2304: Cannot find name 'module'
etTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Des idées?Les fonctionnalités d'ES6 telles que les promesses ne sont pas définies lors du ciblage d'ES5. Il existe d'autres bibliothèques, mais core-js est la bibliothèque javascript que l'équipe Angular utilise. Il contient des polyfills pour ES6.
Angular 2 a beaucoup changé depuis que cette question a été posée. Les déclarations de type sont beaucoup plus faciles à utiliser dans Typescript 2.0.
Pour les fonctionnalités ES6 dans Angular 2, vous n'avez pas besoin de saisies. Utilisez simplement typescript 2.0 ou supérieur et installez @ types / core-js avec npm:
Ensuite, ajoutez les attributs TypeRoots et Types à votre tsconfig.json:
C'est beaucoup plus facile que d'utiliser des dactylographies, comme expliqué dans d'autres réponses. Consultez le billet de blog de Microsoft pour plus d'informations: Typescript: The Future of Declaration Files
la source
typeRoots
si la seule entrée que vous avez estnode_modules/@types
.TypeRoots
etTypes
à tsconfig.json. Dans mon cas, j'ai également dû mettre à jour mon plugin Gulp gulp-typescript 2.x qui était transpilé à l'aide de la version intégrée de TypeScript 1, mais une fois que j'ai mis à jour, j'utilisais donc TypeScript 2 et j'ai ajouté le polyfill @ types / core-js que j'étais ensemble. Merci beaucoup.Pour ceux qui suivent le tutoriel Angular2
angular.io
juste pour être explicite, voici une extension de la réponse de mvdluit où exactement mettre le code:Votre
main.ts
devrait ressembler à ceci:Notez que vous laissez dans les
///
barres obliques, ne les supprimez pas.réf: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
la source
_references.js
cela ne fonctionnera pas. Doit être à l'intérieur du composant comme le suggère cette réponse. En outre, utilisez../../
au lieu de../
pour le chemin d'accès.browser.d.ts
dossier de typage. Juste des.js
fichiers en dessousdist
. Il y a un fichier nommétypings.d.ts
donc j'ai pensé que c'était le nouveau, mais cela n'a pas résolu le problème. La construction pour «es6» fonctionne, mais IE se plaint. Donc coincé avec la construction 'es5' et pas de frappe! : /npm install -g typings typings install
.d.ts
partir du package de typage. Également pour répondre aux exigences IE9 +, a dû construire pour es3.J'ai pu résoudre ce problème avec la commande suivante
Notez que vous devez
typings
faire fonctionner la commande ci-dessus, si vous ne l'avez pas exécutez la commande suivante pour l'installerMETTRE À JOUR
la mise à jour des typages ne lit pas,
--ambient
il est--global
également devenu pour certaines personnes dont vous avez besoin d'installer les définitions des bibliothèques ci-dessus, utilisez simplement la commande suivanteMerci à @bgerth de l' avoir signalé.
la source
typings install dt~es6-promise dt~es6-collections --global --save
typings
mise à jour, je vais ajouter votre solution à la réponseLorsque vous avez Typescript> = 2, l'option "lib" dans tsconfig.json fera le travail. Pas besoin de dactylographie. https://www.typescriptlang.org/docs/handbook/compiler-options.html
la source
Pour l'
Angular 2.0.0-rc.0
ajoutnode_modules/angular2/typings/browser.d.ts
ne fonctionnera pas. Ajoutez d' abord le fichier typings.json à votre solution, avec ce contenu:Et puis mettez à jour le
package.json
fichier pour inclure cecipostinstall
:Maintenant, lancez
npm install
Maintenant, vous devez également ignorer le
typings
dossier dans votretsconfig.json
fichier:Mettre à jour
Maintenant, AngularJS 2.0 utilise
core-js
au lieu dees6-shim
. Suivez son fichier typings.json de démarrage rapide pour plus d'informations.la source
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769vous pouvez ajouter le code au début des fichiers .ts.
la source
J'obtenais ceci sur Angular 2 rc1. Il s'avère que certains noms ont changé avec les saisies v1 par rapport à l'ancien 0.x. Les
browser.d.ts
fichiers sont devenusindex.d.ts
.Après l'exécution, recherchez
typings install
votre fichier de démarrage (où vous démarrez) et ajoutez:/// <reference path="../typings/index.d.ts" />
(ou sans../
si votre fichier de démarrage se trouve dans le même dossier que le dossier typings)L'ajout
index.d.ts
à la liste des fichiers danstsconfig.json
n'a pas fonctionné pour une raison quelconque.De plus, le
es6-shim
package n'était pas nécessaire.la source
J'ai pu résoudre ce problème en installant le
typings
module.(Utilisation de ng 2.0.0-rc.1)
la source
J'ai eu le même problème et je l'ai résolu en utilisant l'
lib
option danstsconfig.json
. Comme l'a dit basarat dans sa réponse , un.d.ts
fichier est implicitement inclus par TypeScript en fonction de l'target
option de compilation , mais ce comportement peut être modifié avec l'lib
option.Vous pouvez spécifier des fichiers de définition supplémentaires à inclure sans modifier la version JS ciblée. Par exemple, cela fait partie de mon actuel
compilerOptions
pour [email protected] et il ajoute le support deses2015
fonctionnalités sans rien installer d'autre:Pour la liste complète des options disponibles, consultez le document officiel .
Notez également que j'ai ajouté
"types": ["node"]
et installénpm install @types/node
pour prendrerequire('some-module')
en charge dans mon code.la source
et ajoutez le chemin correct à index.d.ts
Testé sur angular-2.0.0-rc3
la source
Si
npm install -g typings typings install
cela ne vous aide toujours pas, supprimez les dossiers node_modules et typings avant d'exécuter cette commande.la source
C'est cela qui pense que tout le monde essaie de faire quelque chose de différent. Je pense que ces systèmes sont encore loin de la version finale.
Dans mon cas, j'ai mis à jour de rc.0 vers rc.5 cette erreur est apparue.
Mon correctif a été de changer le tsconfig.json.
la source
"lib"
pas"target"
.ajoutez typing.d.ts dans le dossier principal de l'application et là-bas déclarez la variable que vous souhaitez utiliser à chaque fois
après avoir déclaré cela dans typing.d.ts, l'erreur pour require ne viendra pas dans l'application.
la source
Je suis nouveau sur Angular mais pour moi, la solution a été trouvée en important simplement Input. Je ne peux pas prendre le crédit de celui-ci, je l'ai trouvé sur un autre tableau. C'est une solution simple si vous rencontrez le même problème, mais si vos problèmes sont plus complexes, je lirais les informations ci-dessus.
Mukesh :
la source
J'ai trouvé ce document très utile sur le site Web d'Angular 2. Cela m'a finalement permis de faire fonctionner les choses correctement, alors que les autres réponses ici, pour installer les typages, m'ont échoué avec diverses erreurs. (Mais cela m'a aidé à me diriger dans la bonne direction.)
Au lieu d'inclure es6-promise et es6-collections, il inclut core-js, ce qui a fait l'affaire pour moi ... pas de conflit avec les définitions du noyau ts d'Angular2. De plus, le document explique comment configurer tout cela pour qu'il se produise automatiquement lors de l'installation de NPM et comment modifier votre fichier typings.json.
la source
Angular 2 RC1 a renommé le
node_modules/angular2
répertoire ennode_modules/angular
.Si vous utilisez un gulpfile pour copier des fichiers dans un répertoire de sortie, vous avez probablement encore
node_modules/angular
là-dedans qui peut être récupéré par le compilateur et confondre l'enfer.Donc
node_modules
, effacez (soigneusement) ce que vous avez dans les versions bêta, supprimez également les anciennes saisies et réexécuteztypings install
.la source
Bon appel, @VahidN, j'ai trouvé que j'avais besoin
Moi
tsconfig
aussi, pour arrêter les erreurs dees6-shim
lui-mêmela source
Importez la déclaration ci-dessous dans votre fichier JS.
la source
import './rxjs-extensions';
à moiapp.component.ts
avec le fichier rxjs-extensions du tutoriel angular2 (y compris votre ligne suggérée) et il semble avoir supprimé ces erreurs.La réponse acceptée ne fournit pas de correctif viable, et la plupart des autres suggèrent la solution de contournement "triple-slashes" qui n'est plus viable, car le
browser.d.ts
a été supprimé par les derniers RC Angular2 et n'est donc plus disponible.Je suggère fortement d'installer le
typings
module comme suggéré par quelques solutions ici, mais il n'est pas nécessaire de le faire manuellement ou globalement - il existe un moyen efficace de le faire pour votre projet uniquement et dans l'interface VS2015. Voici ce que vous devez faire:typings
le fichier package.json du projet.script
bloc dans lepackage.json
fichier à exécuter / mettretypings
à jour après chaque action NPM.typings.json
fichier dans le dossier racine du projet contenant une référence àcore-js
(globalement mieux quees6-shim
atm).C'est tout.
Vous pouvez également jeter un œil à cet autre fil de discussion SO et / ou lire cet article sur mon blog pour plus de détails.
la source
J'obtenais cette erreur après avoir fusionné ma branche de développement avec ma branche actuelle. J'ai passé un certain temps à résoudre le problème. Comme vous pouvez le voir dans l'image ci-dessous, il n'y a aucun problème dans les codes.
Donc, le seul correctif a fonctionné pour moi est que le redémarrage du VSCode
la source
Vous devez maintenant les importer manuellement.
la source
Mettre à jour
tsconfig.json
, changerà
la source