gulp-typescript 编译器在只读修饰符上抛出错误



我刚刚升级了我的应用程序以使用Angular 2 rc.6Angular Material 2 alpha 8-1。这些包依赖于typescript 2,后者使用新的readonly修饰符。

我使用 gulp-typescript 来编译我的 .ts 文件,现在我从使用 readonly 修饰符的文件中获得了很多错误。例如,这一行:

readonly change: Observable<MdButtonToggleChange>;

在编译过程中引发以下错误:

错误 TS1005:"="预期。

错误 TS1005:";"预期。

错误 TS1005:"("预期。

我认为这可能是因为gulp-typescript内部使用 typescript 1.8.10 ,它没有readonly修饰符。

我自己的代码都没有使用 readonly ;唯一抛出错误的文件是来自Angular 2 Material包的第三方打字稿定义文件(.d.ts(。有问题的文件都在我的nodes_module/文件夹中,我试图通过tsconfig.json以下内容来忽略它们:

"exclude": [
  "node_modules",
  "typings"
]

不过,错误仍然会出现。

  • 我可以解决这个问题吗?
  • 如果没有,有没有一种简单的方法可以让编译器忽略.d.ts文件?

@cartant昨天得到了正确的答案,但我一分钟前才看到它。基本上,解决方案是让gulp-typescript使用typescript 2而不是内置typescript 1.8。 方法如下:

1. 我在 package.json 中添加了typescript 2.0.2作为开发依赖项

"devDependencies": {    
  "gulp-typescript": "^2.13.6",
  "typescript": "^2.0.2",
}

2. 我跑npm install typescript@2.0.2

3. 我编辑了如何在gulpfile中创建gulp-typescript项目.js

从:

var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json');

自:

var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json', {
    //Use TS version installed by NPM instead of gulp-typescript's built-in
    typescript: require('typescript')
});

更多信息。 现在编译时错误消失了:-(

一种解决方案是将 TypeScript 2.0.2 RC 依赖项添加到您的项目中(npm install typescript@rc --save-dev (,并使用非官方的 typescript 选项将其传递给 gulp-typescript

[...].pipe(ts({
    typescript: require('typescript')
}));

相关内容

最新更新