1

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

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

readonly change: Observable<MdButtonToggleChange>;

在编译期间抛出这些错误:

错误 TS1005:预期为“=”。

错误 TS1005:';' 预期的。

错误 TS1005: '(' 预期。

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

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

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

错误仍然出现。

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

2 回答 2

3

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

1.我在package.jsontypescript 2.0.2中添加了一个devDependency

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

2.我跑了npm install typescript@2.0.2

3.我在gulpfile.js中编辑了我创建gulp-typescript项目的方式

从:

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')
});

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

于 2016-09-05T02:19:20.123 回答
1

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

[...].pipe(ts({
    typescript: require('typescript')
}));
于 2016-09-03T05:17:34.063 回答