缺少Angular 2中@Angular包的TypeScript类型定义

时间:2016-05-05 20:09:17

标签: javascript angularjs typescript angular webpack

现在我已将my application更新为Angular2 v2.0.0-rc.1,当我的应用程序被捆绑在webpack时,我再次看到TypeScript编译错误/警告消息。我从TypeScript源文件中引用的任何@angular包中都会显示这些消息,例如:

ERROR in ./src/app/app.ts
(1,34): error TS2307: Cannot find module '@angular/core'.

ERROR in ./src/app/app.ts
(3,76): error TS2307: Cannot find module '@angular/common'.

ERROR in ./src/app/app.ts
(4,30): error TS2307: Cannot find module '@angular/http'.

使用Angular2的早期测试版,我通过在Promise文件的顶部包含类似这样的内容,解决了Mapapp.ts等类似的消息问题。

///<reference path="node_modules/angular2/typings/browser.d.ts"/>

是否有d.ts Angular2软件包的@angular文件可以参考解决问题?到目前为止,typings系统似乎没有任何可用的东西:

MFO-Mac:angular2-oauth2 mfo$ typings search '@angular'
No results found for search

现在我将我的TypeScript tsconfig.json文件配置为以ES6为目标。但是,如果我将其更改为目标ES5,我不会收到这些@angular错误,但我会为常见的ES6类(例如PromiseSet和{{1} }。这是我为ES6配置的文件:

Map

我怀疑{ "version": "1.6.2", "compilerOptions": { "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es6", "module": "commonjs", "removeComments": true, "sourceMap": true }, "exclude": [ "node_modules", "bower_components", "bootstrap" ], "files": [], "definitions": [ ] } 中有node_modules/@angular中的文件可以列在definitions文件的tsconfig.json部分,但我目前还不知道TypeScript typedef文件的工作原理

如果还有另一种方法来解决这个问题,我当然也会对此持开放态度。

1 个答案:

答案 0 :(得分:5)

如果你告诉它你正在使用Node / NPM样式模块,那么TypeScript编译器似乎足够聪明,可以自己定义文件定义文件。

"moduleResolution": "node",添加到我的tsconfig.json文件中,问题消息消失,应用程序继续按预期工作。

这是我的新文件(新增加的是第4行):

{
  "version": "1.6.2",
  "compilerOptions": {
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es6",
    "module": "commonjs",
    "removeComments": true,
    "sourceMap": true
  },
  "exclude": [
    "node_modules",
    "bower_components",
    "bootstrap"
  ],
  "files": [],
  "definitions": []
}