Angular: не удается найти Promise, Map, Set и Iterator

176

После установки угловых, компилятор Keep Машинопись получить некоторые ошибки о не найдя Promise, Map, Setи Iterator.

До сих пор я их игнорировал, но теперь мне нужно, Promiseчтобы мой код мог работать.

import {Component} from 'angular2/core';
@Component({
    selector: 'greeting-cmp',
    template: `<div>{{ asyncGreeting | async}}</div>`
})
export class GreetingCmp {
    asyncGreeting: Promise<string> = new Promise(resolve => {
// after 1 second, the promise will resolve
        window.setTimeout(() => resolve('hello'), 1000);
    });
}

Additional information:
npm -v is 2.14.12
node -v is v4.3.1
typescript v is 1.6

Ошибки:

................ERROS OF MY CODE.................
    C:\Users\armyTik\Desktop\angular2\greeting_cmp.ts
    Error:(7, 20) TS2304: Cannot find name 'Promise'.
    Error:(7, 42) TS2304: Cannot find name 'Promise'.
    .........................................
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\platform\browser.d.ts
    Error:(77, 90) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\application_ref.d.ts
    Error:(83, 60) TS2304: Cannot find name 'Promise'.
    Error:(83, 146) TS2304: Cannot find name 'Promise'.
    Error:(96, 51) TS2304: Cannot find name 'Promise'.
    Error:(96, 147) TS2304: Cannot find name 'Promise'.
    Error:(133, 90) TS2304: Cannot find name 'Promise'.
    Error:(171, 81) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\change_detection\parser\locals.d.ts
    Error:(3, 14) TS2304: Cannot find name 'Map'.
    Error:(4, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\debug\debug_node.d.ts
    Error:(14, 13) TS2304: Cannot find name 'Map'.
    Error:(24, 17) TS2304: Cannot find name 'Map'.
    Error:(25, 17) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\di\provider.d.ts
    Error:(436, 103) TS2304: Cannot find name 'Map'.
    Error:(436, 135) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\compiler.d.ts
    Error:(12, 50) TS2304: Cannot find name 'Promise'.
    Error:(16, 41) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\linker\dynamic_component_loader.d.ts
    Error:(108, 136) TS2304: Cannot find name 'Promise'.
    Error:(156, 150) TS2304: Cannot find name 'Promise'.
    Error:(197, 128) TS2304: Cannot find name 'Promise'.
    Error:(203, 127) TS2304: Cannot find name 'Promise'.
    Error:(204, 141) TS2304: Cannot find name 'Promise'.
    Error:(205, 119) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\core\render\api.d.ts
    Error:(13, 13) TS2304: Cannot find name 'Map'.
    Error:(14, 84) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\async.d.ts
    Error:(27, 33) TS2304: Cannot find name 'Promise'.
    Error:(28, 45) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\collection.d.ts
    Error:(1, 25) TS2304: Cannot find name 'MapConstructor'.
    Error:(2, 25) TS2304: Cannot find name 'SetConstructor'.
    Error:(4, 27) TS2304: Cannot find name 'Map'.
    Error:(4, 39) TS2304: Cannot find name 'Map'.
    Error:(7, 9) TS2304: Cannot find name 'Map'.
    Error:(8, 30) TS2304: Cannot find name 'Map'.
    Error:(11, 43) TS2304: Cannot find name 'Map'.
    Error:(12, 27) TS2304: Cannot find name 'Map'.
    Error:(14, 23) TS2304: Cannot find name 'Map'.
    Error:(15, 25) TS2304: Cannot find name 'Map'.
    Error:(95, 41) TS2304: Cannot find name 'Set'.
    Error:(96, 22) TS2304: Cannot find name 'Set'.
    Error:(97, 25) TS2304: Cannot find name 'Set'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\lang.d.ts
    Error:(13, 17) TS2304: Cannot find name 'Map'.
    Error:(14, 17) TS2304: Cannot find name 'Set'.
    Error:(78, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\facade\promise.d.ts
    Error:(2, 14) TS2304: Cannot find name 'Promise'.
    Error:(7, 32) TS2304: Cannot find name 'Promise'.
    Error:(8, 38) TS2304: Cannot find name 'Promise'.
    Error:(9, 35) TS2304: Cannot find name 'Promise'.
    Error:(9, 93) TS2304: Cannot find name 'Promise'.
    Error:(10, 34) TS2304: Cannot find name 'Promise'.
    Error:(11, 32) TS2304: Cannot find name 'Promise'.
    Error:(11, 149) TS2304: Cannot find name 'Promise'.
    Error:(12, 43) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\headers.d.ts
    Error:(43, 59) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\http\url_search_params.d.ts
    Error:(11, 16) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\browser\browser_adapter.d.ts
    Error:(75, 33) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\angular2\src\platform\dom\dom_adapter.d.ts
    Error:(85, 42) TS2304: Cannot find name 'Map'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\CoreOperators.d.ts
    Error:(35, 67) TS2304: Cannot find name 'Promise'.
    Error:(50, 66) TS2304: Cannot find name 'Promise'.
    Error:(89, 67) TS2304: Cannot find name 'Promise'.
    Error:(94, 38) TS2304: Cannot find name 'Promise'.
    Error:(94, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\Observable.d.ts
    Error:(46, 62) TS2304: Cannot find name 'Promise'.
    Error:(47, 42) TS2304: Cannot find name 'Iterator'.
    Error:(103, 74) TS2304: Cannot find name 'Promise'.
    Error:(103, 84) TS2304: Cannot find name 'Promise'.
    Error:(143, 66) TS2304: Cannot find name 'Promise'.
    Error:(158, 65) TS2304: Cannot find name 'Promise'.
    Error:(201, 66) TS2304: Cannot find name 'Promise'.
    Error:(206, 38) TS2304: Cannot find name 'Promise'.
    Error:(206, 50) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\ForkJoinObservable.d.ts
    Error:(6, 50) TS2304: Cannot find name 'Promise'.
    Error:(7, 58) TS2304: Cannot find name 'Promise'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\FromObservable.d.ts
    Error:(7, 38) TS2304: Cannot find name 'Promise'.
    Error:(7, 51) TS2304: Cannot find name 'Iterator'.
    C:\Users\armyTik\Desktop\angular2\node_modules\rxjs\observable\PromiseObservable.d.ts
    Error:(9, 31) TS2304: Cannot find name 'Promise'.
    Error:(10, 26) TS2304: Cannot find name 'Promise'.
Став Альфи
источник
1
Установите последнюю версию TypeScript для Visual Studio 2015 .
Mylesk

Ответы:

177

Angular 5 с Typescript ^ 2.0.0

Это также должно работать с более ранними версиями Angular 2+.

Чтобы заставить это работать с машинописным шрифтом 2.0.0, я сделал следующее.

npm install --save-dev @types/core-js

tsconfig.json

 "compilerOptions": {
    "declaration": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "mapRoot": "./",
    "module": "es6",
    "moduleResolution": "node",
    "noEmitOnError": true,
    "noImplicitAny": false,
    "outDir": "../dist/out-tsc",
    "sourceMap": true,
    "target": "es5",
    "typeRoots": [
      "../node_modules/@types"
    ],
    "types": [
      "core-js"
    ]
  }

Подробнее о @types с машинописью 2.0.0.

  1. https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/
  2. https://www.npmjs.com/~types

Пример установки:

npm install --save-dev @types/core-js

Дубликат ошибки идентификатора

Скорее всего, это связано с тем, что повторяющиеся печатные символы ecmascript 6 уже импортируются откуда-то еще, скорее всего, из старой es6-shim.

Дважды проверьте, typings.d.tsчтобы не было ссылок на es6. Удалите любую ссылку на es6из вашего каталога печатных изданий, если у вас есть.

Например:

Это будет конфликтовать с types:['core-js']typings.json.

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332" 
    // es6-shim will also conflict
  }
}

Включение core-jsв массив типов tsconfig.jsonдолжно быть единственным местом, из которого он импортируется.

Угловой CLI 1.0.0-бета.30

Если вы используете Angular-CLI, удалите массив lib в typings.json. Это, кажется, противоречит объявлению core-js в типах.

"compilerOptions" : {
  ...
  // removed "lib": ["es6", dom"],
  ...
},
"types" : ["core-js"]

Webstorm / Intellij Пользователи, использующие Angular CLI

Убедитесь, что встроенный компилятор машинописи отключен. Это будет конфликтовать с CLI. Для компиляции вашей машинописи с помощью CLI вы можете настроить ng serveконфигурацию.

введите описание изображения здесь

Tsconfig compilerOptions lib против типов

Если вы предпочитаете не устанавливать базовые определения типов js, есть несколько библиотек es6, которые включены в набор машин. Они используются через lib: []свойство в tsconfig.

Смотрите здесь, например: https://www.typescriptlang.org/docs/handbook/compiler-options.html

Примечание. Если параметр --lib не указан, будет добавлена ​​библиотека по умолчанию. Используемая библиотека по умолчанию: ► Для --target ES5: DOM, ES5, ScriptHost ► Для --target ES6: DOM, ES6, DOM.Iterable, ScriptHost

ТЛ; др

Короткий ответ либо "lib": [ "es6", "dom" ]или "types": ["core-js"]может быть использован для решения can't find Promise,Map, Set and Iterator. Однако использование обоих приведет к ошибкам дубликатов идентификаторов.

Крис Холленбек
источник
1
Спасибо за обновление и хороший ответ. Я принял ваш ответ, потому что люди, которые все еще приходят сюда, чтобы получить эту ошибку, исчезли до сих пор. Есть ли шанс обновить ваш ответ до RC 5? Я сталкиваюсь с этой ошибкой и, следуя вашему ответу, смог использовать обещание, но теперь в файле node_modules \ @types \ es6-shim \ index.d.ts есть много ошибок: «Дубликат идентификатора« PropertyKey ».» в строках: 6,10,248,283,290 и т. д .; также ошибка в: C: \ Users \ armyTik \ Desktop \ rc5 \ store-app-02 \ node_modules \ typescript \ lib \ lib.es2015.core.d.ts: 17 : 13 Дубликат идентификатора 'PropertyKey'.
Став Альфи
Я обновил свой ответ. Надеюсь, это поможет немного прояснить ситуацию. Я думаю, это должно быть одинаково как для RC5, так и для RC4.
Крис Холленбек
Я также изменил это, чтобы отразить только core-js, так что, надеюсь, это меньше запутывает. core-js и es6 предназначены для объявлений типа es6. Я предпочитаю core-js, поскольку он охватывает больше, чем es6-shim.
Крис Холленбек
Спасибо за обновление. На этот раз мне не повезло. Я обновил свои текущие ошибки.
Став Альфи
2
Возможно, lib - лучшее решение. github.com/angular/angular/blob/…
Alex
75

У меня также есть та же проблема - «Обещание не найдено» - когда код хочет создать объект Promise.

Попробовал какое-то решение, найденное для stackoverflow, в том числе решение для извлечения System.config ({...}) для формирования system.js и включения его в index.html.

Наконец я решил проблему. Проблема в том, что в index.html включен es6-shim.min.js. Тем не менее, в tsconfig.json свойство "target" в "compilerOptions" имеет значение "es5". После того, как я изменил его на "es6", ошибка исчезла.

Дэниел С. Дэн
источник
2
Это была проблема и для меня. Кто-нибудь знает, почему это может вызвать эту ошибку?
Ник Брэди,
Исправлены также ошибки, которые я получил в IntelliJ IDEA / WebStorm
bentolor
5
Но js-код необходимо перенести в es5, так как не все браузеры готовы к es6. У кого-нибудь есть проблемы с es6 в разных браузерах. Thankx!
bmnepali
у меня работает на angular2.1.0. компилятор 2.1.0 core 2.1.0 common2.1.0 rxjs5.0.0-beta.12 platform-browser2.1.0
farhad goodarzi
Спасибо! Вы сэкономили мне много времени
Кристиан Транина
63

Angular 2 Final

- поддержка es5 (отлично работает с TS 2.0.0 +)

Каждое обновление es6-shimтеперь не поддерживается, если у вас установлены оба набора вместе es6-shimи core-jsвместе. Удалите es6-shimпечатание, упомянув в tsconfig.json. Теперь вы можете ссылаться ниже, core-jsнабрав для es5поддержки внутриmain.ts

///<reference path="./../typings/globals/core-js/index.d.ts"/>

tsconfig.json

exclude: [
   "node_modules", //<-- this would be needed in case of VS2015
   "node_modules/@typings",
   "typings"
]

- поддержка es6

Вам просто нужно установить "target"свойство es6, тогда все ошибки исчезнут. И переданный код будет в es6формате.

Панкадж Паркар
источник
Большое спасибо. У меня не было возможности найти это самостоятельно.
Став Альфи
@StavAlfi np .. что происходит .. Рад помочь вам .. Спасибо :)
Pankaj Parkar
С бета.7 он должен быть установлен, если вы используете настройку проекта в кратком руководстве. Какую бета-версию Angular вы используете? Я подтверждаю нарушение изменения с углового 2.0.0 beta.7
Marc
1
В кратком руководстве package.json поддерживает актуальную версию Angular 2. Если вы копируете package.json. tscconfig.json и typings.json в корневой каталог вашего проекта и вызовите npm -install. Настройка проекта будет в порядке.
Марк
3
@PankajParkar 2.0.0-rc.1. Я начал использовать Angular только пару дней назад, работая над документами по началу работы [здесь] (). В package.jsonони положили "angular2-in-memory-web-api": "0.0.7"и остальная часть углового материала происходит от "@angular/<module>": "2.0.0-rc.1"где <module>находится common, compiler, core, http, platform-browser, platform-browser-dynamic, router, router-deprecatedи upgrade.
Гектор
42

Обновление от angular-2.0.0-rc.4

TLDR;

  1. Переносить на es6

    • ошибка исчезает (с некоторыми ошибками).
  2. Перевести на es5

    • установить набор текста
    • установить прокладку es6
    • убедитесь, что он компилируется с вашим кодом.
    • ошибка уходит.

Для читателей:

Вариант 1: перенос на es6 или es2015

tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
"exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Имейте в виду, что uglifyjs не поддерживает es6 на данный момент . Это может повлиять на создание производственных пакетов.

Вариант 2. Перейдите на es5, установите набор текста, а затем установите es6-shim:

tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
     ...
  },
  "exclude": [
    "node_modules",
    "jspm_packages"
  ]
}

Установите набор текста, затем установите es6-shim:

npm install typings --saveDev
typings install dt~es6-shim --global --save

Если вы идете по этому пути, вам нужно убедиться, что компилятор машинописного текста может найти файл .d.ts.

У вас есть два варианта:

а. Убедитесь, что ваш файл tsconfig.json находится на том же уровне, что и папка для набора текста.

б. Включите ссылку в ваш файл main.ts, где ваше приложение angular2 загружается.

Вариант A: убедитесь, что ваш файл tsconfig.json находится на том же уровне, что и папка для набора текста.

Примечание: НЕ используйте флаг исключения, чтобы исключить папку для ввода.

project
|-- src
|-- node_modules
|-- package.json
|-- typings
|-- tsconfig.json

Вариант Б: ссылка в основной файл перед загрузкой (не делайте этого):

Как показано в других ответах, этот файл больше не включен Angular

main.ts:

/// <reference path="../../typings/globals/es6-shim/index.d.ts" />
Ник Акоста
источник
2
Вариант 1 отлично работает для RC4. Обязательно удалите core-js и другие типы, которые предоставляют Promise, Map и т. Д., Чтобы избежать конфликтов пространства имен.
wtfzn
1
Спасибо, 1 работал. Нужны либо core-js, либо es6-shim (не оба). А затем включите ./typings/index.d.ts в свой процесс компиляции ts.
k3a
1
--saveDevне работает на данный момент. --save-devделает.
Георгий Советов
1
Не должен typingsбыть установлен глобально?
Георгий Советов
8

Это то, что сработало для меня.

проверьте, существует ли typings.jsonфайл,

Это выглядит примерно так,

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160317120654",
    "jasmine": "registry:dt/jasmine#2.2.0+20160505161446",
    "node": "registry:dt/node#6.0.0+20160613154055"
  }
}

Установить набор текста глобально.

sudo npm install -g typings

после установки типизации , запустите

typings install

затем перезапустите сервер.

Все это Ваити
источник
6

У меня была похожая проблема, когда он не распознавал метод Promise.resolve () . Я изменил «целевое» значение с ES5 на ES6 в tsconfig.json . Это решило проблему.

Надеюсь это поможет.

Нандакумар Пурохит
источник
Да, это помогло мне точно - изменило «целевое» значение с ES5 на ES6 в tsconfig.json.
Грег Тревеллик,
5

Поскольку Angular 2 перешел на RC 0, /angular2/typings/browser.d.ts больше не является частью дистрибутива Angular 2. Файл может быть установлен отдельно.

Отсюда: https://github.com/angular/angular/issues/8513 есть несколько вариантов. Тот, который работал для меня, был:

typings install es6-shim --ambient --save

// In your app.ts
/// <reference path="typings/browser.d.ts" />
Джеймс
источник
1
Спасибо за это, но команда для набора текста 1.0+ выглядит следующим образом: введите команду install dt ~ es6-shim --save --global ( github.com/typings/typings/issues/517 ) и затем используйте /// <reference path = " набор текста / es6-shim / es6-shim.d.ts "/>
Саймон Тревелла
4

Мне удалось решить эту проблему, не добавляя ссылку на тройную косую черту в файл начальной загрузки TS, изменив ES6 (что вызывает кучу проблем, как сказал @DatBoi ), обновить VS2015 NodeJSи / или NPMсвязанные сборки или установить typingsглобально.

Вот что я сделал в несколько шагов:

  • добавлено typingsв package.jsonфайл проекта .
  • добавлен scriptблок в package.jsonфайл для выполнения / обновления typingsпосле каждого действия NPM.
  • добавил typings.jsonфайл в корневую папку проекта со ссылкой на core-jsодин из лучших пакетов shim / polyfill на данный момент для решения проблем ES5 / ES6.

Вот как package.jsonдолжен выглядеть файл (только соответствующие строки):

{
  "version": "1.0.0",
  "name": "YourProject",
  "private": true,
  "dependencies": {
    ...
    "typings": "^1.3.2",
    ...
  },
  "devDependencies": {
    ...
  },
  "scripts": {
      "postinstall": "typings install"
  }
}

И вот typings.jsonфайл:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160602141332",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160621231320"
  }
}

( Jasmineи Nodeне обязательны, но я предлагаю сохранить их на случай, если это понадобится в будущем).

Это исправление отлично работает с Angular2 RC1 до RC4, что мне и было нужно, но я думаю, что оно также исправит аналогичные проблемы и с другими пакетами библиотек с поддержкой ES6.

AFAIK, я думаю, что это самый чистый способ исправить это, не испортив настройки VS2015 по умолчанию.

Для получения дополнительной информации и подробного анализа проблемы, я также предлагаю прочитать этот пост в моем блоге.

Darkseal
источник
3

Если используется Angular2 RC1 с типами v1.0 +, используйте команду:

typings install dt~core-js --save --global

чтобы установить определение core-js, а затем сослаться на ваш глобальный индекс в файле main.ts:

/// <reference path="../../../typings/index.d.ts" />

Если вы используете es6-shim или какую-либо другую библиотеку shim, установите вместо этого типизацию

См. Https://github.com/typings/typings/issues/517.

Саймон Тревелла
источник
2

Я заметил, что эти проблемы появляются после обновления с Angular 5 до Angular 6. Я смог это исправить, выполнив в VS2017 следующее:

  • Убедитесь, что TypeScript SDK был установлен (через установщик Visual Studio) для моей конкретной версии TypeScript, 2.9
  • Убедитесь, что свойство проекта Module System установлено таким же, как в моем файле tsconfig.json: ES2015. Это часто происходит автоматически, если файл tsconfig находится в корне проекта. Однако, так как я использовал шаблон VS Angular, он помещает эти файлы в подпапку «ClientApp», и свойство проекта Module System не было установлено.

Свойства проекта VS2017

tsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "lib": [
      "es2017",
      "dom"
    ],
    "module": "es2015",
    "baseUrl": "./"
  }
}
dasch88
источник
1

У меня была такая же проблема при создании объекта обещания внутри моего класса. Сменив имя цели на «es5» с «es6», я решил мою проблему.

CharithW
источник
1

Другое возможное решение - переустановить наборы:
это работает для меня"angular2": "2.0.0-beta.15"

  1. npm clean cache
  2. npm install
  3. npm install -g typings
  4. Удалить typingsкаталог из проекта (установлены модули ввода в каталог)
  5. typings install
  6. npm run
Вики Гонсалвес
источник
1

Еще одно хорошее решение. Вам нужно создать файл typings.json в корневом каталоге проекта с содержимым:

{
  "globalDependencies": {
    "core-js": "registry:dt/core-js#0.0.0+20160725163759",
    "jasmine": "registry:dt/jasmine#2.2.0+20160621224255",
    "node": "registry:dt/node#6.0.0+20160909174046"
  }
}

Затем установите пакет глобальных или локальных типизаций, если он не установлен (я устанавливаю его глобально):

sudo npm install --global typings

В корневом каталоге проекта выполните команду:

typings install

После этого проблема решена. Нет необходимости менять цель tsconfig на es6 или es7. Ваше веб-приложение после этого не поддерживает некоторые старые версии браузеров.

Алексей Никитенко
источник
1

Если вы пришли сюда, потому что вы видите эти ошибки в Visual Studio 2017, то у вас возникнет другая проблема, как описано выше, если вам удастся скомпилировать. Это связано с тем, что языковая служба не выбирает ваш файл tsconfig.json.

https://developercommunity.visualstudio.com/content/problem/208941/vs-156-ignores-tsconfigjson-and-typescriptcompileb.html

Вы должны установить действие сборки вашего tsconfig.json в «Содержимое» (щелкните правой кнопкой мыши -> Свойства), тогда VS подхватит его.

Питер Ван Винкель
источник
0

Я обнаружил, что ссылка в boot.ts неверна. Обновление этого пути для /// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />устранения ошибок Обещания.

dawesome
источник
0

Я тренируюсь с учебником angular2 (герой).
После установки @ types / core-js, прокомментированных в ответах на эти вопросы, я получил ошибку «Duplicate identifier».
В моем случае это было решено как удаление строки lib в tsconfig.json.

// "lib": ["es2015", "dom"]

coffeenjava
источник
-1

моя файловая структура выглядит так:

project
 |--node-modules
 |   |--angular2
 |   |   |--typings
 |   |   |   |--browser.d.ts
 |--src
 |--app.ts

вставьте ниже в верхней части вашего app.ts и ваша проблема решена

/// <reference path=">../../../node_modules/angular2/typings/browser.d.ts" />
Матей Арье
источник
Изменение записи TARGET для указания на ES6 в файле tsconfig.json устранило эту проблему для меня, как указано в некоторых ответах выше.
TheCopyPaster
-1

У меня возникла та же проблема, и я смог найти ее в github https://github.com/angular/angular-cli/issues/1901 , где указано , что это проблема typescript@2.0.2.

Понижение машинописного текста до 2.0.0глобально и локально помогло мне решить его.

Во всем мире:

npm uninstall typescript -g
npm cache clean
npm install typescript@2.0.0 -g

Локально: перейдите в папку проекта, которую вы создали ng new

npm uninstall typescript
npm cache clean
npm install typescript@2.0.0

Я также изменил версию машинописного текста в package.json с ^2.0.0на 2.0.0, но он не работал, пока я не понизил локальную установку машинописного текста.

waterscar
источник
Почему люди это осуждают, я хотел бы знать, почему это плохая идея. Если машинописный текст является транспонированным языком и конвертируется в javascript, он настолько же безопасен, как и ваш браузер, поэтому он не рискует, верно?
user3505901