Visual Studio,Gulp,Angular2最终打字稿错误"找不到名字"和#34;重复的标识符"

时间:2016-09-24 17:34:15

标签: angular typescript visual-studio-2015 npm gulp

我已更新我的项目以使用angular 2最终版本。我还更新了visual studio,使用了工具中的typescript 2.0.3 - >扩展和更新经理。

我使用gulp来编译我的打字稿,它符合正确无误。但是我在visual studio中遇到了成千上万的错误。最常见的三个错误是:

  

错误TS2403后续变量声明必须具有相同的类型。变量' httpVersionMinor'必须是' string'类型,但这里有类型'数字'。的 index.d.ts

     

错误TS2300重复标识符' export ='。的 index.d.ts

     

错误TS2320接口'服务器'不能同时扩展类型   ' EventEmitter'和'服务器'。被命名的财产' emit'类型   ' EventEmitter'和'服务器'不一样。的 index.d.ts

这是我的tsconfig.json文件:

    {
      "compilerOptions": {
        "noImplicitAny": false,
        "removeComments": false,
        "sourceMap": true,
        "target": "es5",
        "module": "commonjs",
        "moduleResolution": "node",
        "emitDecoratorMetadata": true,
        "experimentalDecorators": true
      },
      "exclude": [
        "node_modules",
        "typings"
      ]
    } 

这是我的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"
  }
}

这是我的main.ts文件:

/// <reference path="../typings/index.d.ts"/>
/// <reference path="../typings/tsd.d.ts"/>
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';

// APP imports *****************************************************
import { AppModule } from './app/app.module';

// ENABLE PRODUCTION MODE
    // enableProdMode();

platformBrowserDynamic().bootstrapModule(AppModule)
    .catch((err: any) => console.error(err));

问题:

如果我删除此行:

  

参考路径=&#34; ../ typings / index.d.ts&#34;

从我的main.ts文件的顶部然后错误消失在visual studio中,但是当我尝试使用gulp / npm进行编译时,错误全部出现。

我试过了:

  • 使用npm卸载并重新安装打字
  • 删除typings和node modules文件夹并运行 npm install
  • 将visualcript版本的typescript更新为2.0.3
  • 确保没有提及早期RC的es6垫片

问题

当我引用index.d.ts文件时,有人可以帮我弄清楚为什么这些错误只会在Visual Studio中抛出,或者当我删除该引用时,为什么错误只出现在npm中?

1 个答案:

答案 0 :(得分:0)

这是解决方案

我将项目切换到angular2 final和typescript 2.0.3

这导致了我在Visual Studio中开发的问题,但是使用gulp任务来编译和构建我的项目。

所以我必须做的就是修复错误:

  • 将gulp-typescript,typings,tslint,coedlyzer,gulp-tslint更新到packages.json文件中的最新版本
  • 从我的main.ts文件中删除index.d.ts引用
  • 更新我的gulp typescript编译任务,以包含下面显示的index.d.ts文件()

这是我的新gulp任务,包括我的index.d.ts文件:

gulp.task('ts:compile', function () {
return gulp
    .src(['./src/**/*.ts', 'typings/index.d.ts'], { base: '.' }) 
        .pipe(sourcemaps.init())
        .pipe(tsc(tsConfig.compilerOptions)) 
        .pipe(sourcemaps.write('.'))
        .pipe(gulp.dest('.')); 

 });

现在,visual studio不会抛出错误,并且gulp会正确编译代码。

啧。 visual studio和angular2之间的集成仍然有点粗糙