Angular 2找不到文件名' Set'

时间:2016-07-28 11:21:04

标签: typescript angular typescript-typings

目前,我正在将我的项目从angular2 beta15更新为rc4。当我编译时,我收到一个错误:

  

path/node_modules/@angular/common/src/directives/ng_class.d.ts(81,35):错误TS2304:找不到姓名'设置'。

我的tsconfig.json如下所示:

{
  "compilerOptions": {
    "target": "ES5",
    "module": "commonjs",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "moduleResolution": "node",
    "removeComments": false,
    "noImplicitAny": true,
    "suppressImplicitAnyIndexErrors": false,
    "declaration": true,
    "outDir": "tmp/app"
  },
  "exclude": [
    "node_modules",
    "dist",
    "tmp"
  ]
}

在main.ts中我也包括:

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

和typings.json:

{
  "name": "my-project",
  "dependencies": {},
  "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",
    "moment": "registry:dt/moment#2.8.0+20160316155526",
    "moment-node": "registry:dt/moment-node#2.11.1+20160329220348",
    "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654"
  }
}

当我改变&#34; target&#34;:&#34; ES5&#34;到&#34; ES6&#34;在tsconfig.json中,但我需要使用ES5。我认为当我不包含///<reference path="../../node_modules/angular2/typings/browser.d.ts"/>时会出现问题但是,根据https://github.com/typings/typings/issues/151,我们可以使用typings/index.d.ts代替<table style="width: 600px; border-collapse: collapse; background-color: #000;" cellspacing="0" cellpadding="0"> <tr> <td style="width:200px; border-collapse: inherit;" cellspacing="0" cellpadding="0" align="center"><img src="http://static.beeline.kz/pics/VIP/bundle.png"></td> <td style="width:200px; border-collapse: inherit;" cellspacing="0" cellpadding="0" align="center"><img src="http://static.beeline.kz/pics/VIP/call.png"></td> <td style="width:200px; border-collapse: inherit;" cellspacing="0" cellpadding="0" align="center"><img src="http://static.beeline.kz/pics/VIP/delivery.png"></td> </tr> <tr> <td style="width:200px; border-collapse: collapse;" cellspacing="0" cellpadding="0"><div style="font-size:12px; font-family: Arial,Helvetica, Sans-serif; font-weight: bold; line-height: 25px; color: #ffffff; text-align: center; padding: 20px 0px 20px 0px;">Большие пакеты минут<br>и Интернет трафика,<br>для звонков по Казахстану<br>и в роуминге</div></td> <td style="width:200px; border-collapse: collapse;" cellspacing="0" cellpadding="0"><div style="font-size:12px; font-family: Arial,Helvetica, Sans-serif; font-weight: bold; line-height: 25px; color: #ffffff; text-align: center; padding: 20px 0px 20px 0px;">Приоритет в Call-center,<br>Офисах продаж<br>и обслуживани</div></td> <td style="width:200px; border-collapse: collapse;" cellspacing="0" cellpadding="0"><div style="font-size:12px; font-family: Arial,Helvetica, Sans-serif; font-weight: bold; line-height: 25px; color: #ffffff; text-align: center; padding: 20px 0px 20px 0px;">Доставка купленного<br>номера в любую<br>точку Казахстана</div></td> </tr> </table>

请您分享您的意见以解决此问题?非常感谢你提前。

2 个答案:

答案 0 :(得分:2)

我认为Set是由ES6的polyfill提供的。 Angular2建议使用core-js(参见https://angular.io/guide/quickstart):

  

我们从core-js的ES2015 / ES6垫片开始,它使用ES2015(ES6)的基本功能修补全局背景(窗口)

您可以在typings.json文件中指定它,但需要使用命令typings install安装打字。

答案 1 :(得分:2)

我在尝试运行演示应用程序时遇到此错误。与您的经历类似,如果我将目标更改为&#34; es6&#34;在我的tsconfig.json中,我没有任何问题。运行Angular 2 Quick Start应用程序后,我开始比较tsconfig.json文件中的差异。它归结为我在tsconfig.json文件中缺少的一行:

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

将一行添加到我的tsconfig.json文件后,它修复了错误。这是我在Angular Typescript Configuration文档中找到的关于该行的内容:

  

<强> lib.d.ts

     

TypeScript包含一个名为lib.d.ts的特殊声明文件。这个   file包含各种常见JavaScript的环境声明   JavaScript运行时和DOM中存在的构造。

     

基于--target,TypeScript添加了额外的环境声明   像Promise,如果我们的目标是es6。

     

由于QuickStart的目标是es5,我们可以覆盖列表   要包含的声明文件:

     

&#34; lib&#34;:[&#34; es2015&#34;,&#34; dom&#34;]

     

多亏了这一点,即使针对es5,我们也拥有所有es6类型。

https://angular.io/docs/ts/latest/guide/typescript-configuration.html