gulp-typescript 编译器在 readonly 修饰符上抛出错误
gulp-typescript compiler throws errors on readonly modifier
我刚刚升级了我的应用程序以使用 Angular 2 rc.6
和 Angular Material 2 alpha 8-1
。这些包依赖于 typescript 2
,后者使用新的 readonly
修饰符。
我使用 gulp-typescript
编译我的 .ts 文件,现在我从使用 readonly
修饰符的文件中得到了很多错误。例如,这一行:
readonly change: Observable<MdButtonToggleChange>;
编译期间抛出这些错误:
error TS1005: '=' expected.
error TS1005: ';' expected.
error TS1005: '(' expected.
我认为这可能是因为 gulp-typescript
内部使用 typescript 1.8.10
,它没有 readonly
修饰符。
None 我自己的代码使用 readonly
;唯一抛出错误的文件是 Angular 2 Material
包中的第三方打字稿定义文件 (.d.ts
)。有问题的文件都在我的 nodes_module/
文件夹中,我试图通过在 tsconfig.json
中添加以下内容来忽略它们:
"exclude": [
"node_modules",
"typings"
]
但错误仍然出现。
- 我能解决这个问题吗?
- 如果不是,是否有一种简单的方法让编译器忽略
.d.ts
个文件?
一个解决方案是将 TypeScript 2.0.2 RC 依赖项添加到您的项目 (npm install typescript@rc --save-dev
) 并使用非官方 typescript
选项将其传递给 gulp-typescript
:
[...].pipe(ts({
typescript: require('typescript')
}));
@cartant 昨天得到了正确答案,但我一分钟前才看到。基本上,解决方案是让 gulp-typescript
使用 typescript 2
而不是内置的 typescript 1.8
。方法如下:
1. 我在 package.json
中添加了 typescript 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')
});
More info. 现在编译时错误消失了:-)
我刚刚升级了我的应用程序以使用 Angular 2 rc.6
和 Angular Material 2 alpha 8-1
。这些包依赖于 typescript 2
,后者使用新的 readonly
修饰符。
我使用 gulp-typescript
编译我的 .ts 文件,现在我从使用 readonly
修饰符的文件中得到了很多错误。例如,这一行:
readonly change: Observable<MdButtonToggleChange>;
编译期间抛出这些错误:
error TS1005: '=' expected.
error TS1005: ';' expected.
error TS1005: '(' expected.
我认为这可能是因为 gulp-typescript
内部使用 typescript 1.8.10
,它没有 readonly
修饰符。
None 我自己的代码使用 readonly
;唯一抛出错误的文件是 Angular 2 Material
包中的第三方打字稿定义文件 (.d.ts
)。有问题的文件都在我的 nodes_module/
文件夹中,我试图通过在 tsconfig.json
中添加以下内容来忽略它们:
"exclude": [
"node_modules",
"typings"
]
但错误仍然出现。
- 我能解决这个问题吗?
- 如果不是,是否有一种简单的方法让编译器忽略
.d.ts
个文件?
一个解决方案是将 TypeScript 2.0.2 RC 依赖项添加到您的项目 (npm install typescript@rc --save-dev
) 并使用非官方 typescript
选项将其传递给 gulp-typescript
:
[...].pipe(ts({
typescript: require('typescript')
}));
@cartant 昨天得到了正确答案,但我一分钟前才看到。基本上,解决方案是让 gulp-typescript
使用 typescript 2
而不是内置的 typescript 1.8
。方法如下:
1. 我在 package.json
中添加了typescript 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')
});
More info. 现在编译时错误消失了:-)