Estou usando Angular (versão 2) com TypeScript (versão 1.6) e quando compilo o código, recebo estes erros:
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'.
Este é o código:
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
fonte
fonte
import {ROUTER_PROVIDERS} from 'angular2/router';
: estou tendo o mesmo problema e, por algum motivo, isso corrige isso para mim ...?!?Respostas:
Um problema conhecido: https://github.com/angular/angular/issues/4902
Razão principal: o
.d.ts
arquivo incluído implicitamente pelo TypeScript varia de acordo com o destino de compilação; portanto, é necessário ter mais declarações de ambiente ao direcionar,es5
mesmo que haja coisas realmente presentes nos tempos de execução (por exemplo, chrome). Mais sobrelib.d.ts
fonte
Existe uma solução alternativa mencionada no changelog para 2.0.0-beta.6 (11-02-2016) (listado em alterações recentes):
verifique se você tem o caminho de referência correto, eu precisava adicionar ../ ao início para que isso funcione.
fonte
TS2304: Cannot find name 'module'
eTS2339: Property 'find' does not exist on type 'MyThing[]'.
... Alguma idéia?Recursos do ES6, como promessas, não são definidos ao segmentar o ES5. Existem outras bibliotecas, mas core-js é a biblioteca javascript usada pela equipe Angular. Ele contém polyfills para ES6.
O Angular 2 mudou muito desde que essa pergunta foi feita. As declarações de tipo são muito mais fáceis de usar no Typescript 2.0.
Para os recursos do ES6 no Angular 2, você não precisa de Typings. Basta usar o typescript 2.0 ou superior e instalar @ types / core-js com o npm:
Em seguida, adicione os atributos TypeRoots e Types ao seu tsconfig.json:
Isso é muito mais fácil do que usar Typings, conforme explicado em outras respostas. Consulte a publicação no blog da Microsoft para obter mais informações: Texto datilografado: O futuro dos arquivos de declaração
fonte
typeRoots
se a única entrada que você possui fornode_modules/@types
.TypeRoots
e oTypes
tsconfig.json. No meu caso, eu também tive que atualizar meu plug-in Gulp gulp-typescript 2.x, que estava transpilando usando e incorporando a versão do TypeScript 1, mas depois que atualizei, usei o TypeScript 2 e adicionei o polyfill @ types / core-js. conjunto. Muito Obrigado.Para aqueles que seguem o tutorial do Angular2
angular.io
apenas para ser explícito, aqui está uma expansão da resposta do mvdluit sobre exatamente onde colocar o código:Você
main.ts
deve ficar assim:Observe que você deixa nas
///
barras, não as remova.ref: https://github.com/ericmdantas/angular2-typescript-todo/blob/master/index.ts#L1
fonte
_references.js
ela não funcionará. Tem que estar dentro do componente como esta resposta sugere. Além disso, use em../../
vez de../
para o caminho.browser.d.ts
na pasta de digitações. Apenas.js
arquivos abaixodist
. Há um arquivo chamado,typings.d.ts
então eu pensei que era o novo, mas não resolveu o problema. Construir para 'es6' funciona, mas o IE reclama. Tão preso com a construção 'es5' e sem digitações! : /npm install -g typings typings install
.d.ts
do pacote de digitações. Também para atender aos requisitos do IE9 +, tive que construir para o es3.Consegui consertar isso com o seguinte comando
Observe que você precisa
typings
fazer o comando acima funcionar, se você não o tiver, execute o seguinte comando para instalá-loATUALIZAR
se a atualização de digitação não ler
--ambient
, tornou-se--global
também para algumas pessoas que você precisa instalar as definições das bibliotecas acima, basta usar o seguinte comandoObrigado a @bgerth por apontar isso.
fonte
typings install dt~es6-promise dt~es6-collections --global --save
typings
atualização, vou acrescentar a sua solução para a respostaAo ter o Typecript> = 2, a opção "lib" no tsconfig.json fará o trabalho. Não há necessidade de digitações. https://www.typescriptlang.org/docs/handbook/compiler-options.html
fonte
Para
Angular 2.0.0-rc.0
adicionarnode_modules/angular2/typings/browser.d.ts
não vai funcionar. Primeiro adicione o arquivo typings.json à sua solução, com este conteúdo:E atualize o
package.json
arquivo para incluir issopostinstall
:Agora corra
npm install
Agora também você deve ignorar a
typings
pasta no seutsconfig.json
arquivo:Atualizar
Agora o AngularJS 2.0 está usando em
core-js
vez dees6-shim
. Siga o arquivo typings.json de início rápido para obter mais informações.fonte
rc0
github.com/angular/angular/issues/4902#issuecomment-216495769você pode adicionar o código no início dos arquivos .ts.
fonte
Eu estava conseguindo isso no Angular 2 rc1. Acontece que alguns nomes foram alterados com as letras v1 versus o antigo 0.x. Os
browser.d.ts
arquivos se tornaramindex.d.ts
.Depois de executar,
typings install
localize seu arquivo de inicialização (onde você inicializa) e adicione:/// <reference path="../typings/index.d.ts" />
(ou sem o../
arquivo se estiver na mesma pasta que a pasta de digitações)A adição
index.d.ts
à lista de arquivos notsconfig.json
não funcionou por algum motivo.Além disso, o
es6-shim
pacote não era necessário.fonte
Consegui consertar isso instalando o
typings
módulo.(Usando o ng 2.0.0-rc.1)
fonte
Eu tive o mesmo problema e eu resolvi-lo usando a
lib
opçãotsconfig.json
. Como dito por basarat em sua resposta , um.d.ts
arquivo é implicitamente incluído pelo TypeScript, dependendo datarget
opção de compilação, mas esse comportamento pode ser alterado com alib
opção.Você pode especificar arquivos de definição adicionais a serem incluídos sem alterar a versão JS de destino. Por exemplo, isso faz parte do meu atual
compilerOptions
para [email protected] e adiciona suporte paraes2015
recursos sem instalar mais nada:Para a lista completa de opções disponíveis, consulte o documento oficial .
Observe também que adicionei
"types": ["node"]
e instaleinpm install @types/node
para oferecer suporterequire('some-module')
ao meu código.fonte
e adicione o caminho correto para index.d.ts
Tentei em @ angular-2.0.0-rc3
fonte
Se
npm install -g typings typings install
ainda não ajudar, apagar node_modules e tipagens pastas antes de executar este comando.fonte
É assim que pensamos como todos estão tentando fazer algo diferente. Eu acredito que esses sistemas ainda estão longe da versão final.
No meu caso, atualizei de rc.0 para rc.5 esse erro apareceu.
Meu conserto foi alterar o tsconfig.json.
fonte
"lib"
, não"target"
.adicione o type.d.ts na pasta principal do aplicativo e declare a variável que você deseja usar sempre
depois de declarar isso em digitação.d.ts, o erro for require não aparecerá no aplicativo.
fonte
Eu sou novo no Angular, mas para mim a solução foi encontrada simplesmente importando o Input. Não posso receber crédito por este, encontrei-o em outro fórum. Esta é uma correção simples, se você estiver tendo o mesmo problema, mas se seus problemas forem mais complexos, eu leria o material acima.
Mukesh :
fonte
Encontrei este documento muito útil no site do Angular 2. Finalmente, deixei que as coisas funcionassem corretamente, enquanto as outras respostas aqui, para instalar as tipagens, falharam comigo com vários erros. (Mas ajudou a me levar na direção certa.)
Em vez de incluir es6-promessa e es6-coleções, ele inclui core-js, o que fez o truque para mim ... não há conflito com as definições de core ts do Angular2. Além disso, o documento explicou como configurar tudo isso automaticamente ao instalar o NPM e como modificar seu arquivo typings.json.
fonte
Angular 2 RC1 renomeou o
node_modules/angular2
diretório paranode_modules/angular
.Se você estiver usando um gulpfile para copiar arquivos para um diretório de saída, provavelmente ainda estará
node_modules/angular
sentado lá, o que pode ser detectado pelo compilador e confundir o inferno.Portanto, (com cuidado), limpe o que você tem
node_modules
das versões beta e exclua todas as datilografias antigas e execute novamentetypings install
.fonte
Boa ligação, @VahidN, achei necessário
No meu
tsconfig
também, para parar erros dees6-shim
si mesmofonte
Importe a instrução abaixo no seu arquivo JS.
fonte
import './rxjs-extensions';
aoapp.component.ts
arquivo rxjs-extensions do tutorial angular2 (incluindo a linha sugerida) e parece que ele removeu esses erros.A resposta aceita não fornece uma solução viável, e a maioria das outras sugere a solução alternativa "barras triplas" que não é mais viável, pois a
browser.d.ts
foi removida pelos últimos RCs do Angular2 e, portanto, não está mais disponível.Eu sugiro fortemente instalar o
typings
módulo como sugerido por algumas soluções aqui, mas não é necessário fazê-lo manualmente ou globalmente - existe uma maneira eficaz de fazer isso apenas no seu projeto e na interface do VS2015. Aqui está o que você precisa fazer:typings
no arquivo package.json do projeto.script
bloco nopackage.json
arquivo para executar / atualizartypings
após cada ação do NPM.typings.json
arquivo na pasta raiz do projeto contendo uma referência acore-js
(em geral, melhor quees6-shim
atm).É isso aí.
Você também pode dar uma olhada neste outro tópico do SO e / ou ler esta postagem no meu blog para obter detalhes adicionais.
fonte
Eu estava recebendo esse erro depois de mesclar meu ramo de desenvolvimento ao meu ramo atual. Passei algum tempo para corrigir o problema. Como você pode ver na imagem abaixo, não há nenhum problema nos códigos.
Portanto, a única correção que funcionou para mim é que Reiniciando o VSCode
fonte
Agora você deve importá-los manualmente.
fonte
Atualizar
tsconfig.json
, alterarpara
fonte