エラー TS1056: アクセサは、gulp-typescript で ECMAScript 5 をターゲットにしている場合にのみ使用可能です
gulp-typescript を使って TS を JS にトランスコンパイルしているときに、このエラーメッセージが出ます。getter/setter のために ES5 の機能を使おうとしています。
エラー TS1056: アクセサは ECMAScript 5 以上をターゲットにしている場合にのみ利用可能です
トランスコンパイラをES5向けにターゲットにするにはどうすればよいですか?
私は、target=es5 を設定し、それを TypeScript に渡すことを提案する解決策を探してグーグルで調べました。私は tsconfig.json を使って以下のことを行いました
tsconfig.js
{
"compilerOptions": {
"target": "es5"
},
"files": []
}
gulp タスク
import gulp from 'gulp';
import gulpif from 'gulp-if';
import livereload from 'gulp-livereload';
import typescript from 'gulp-typescript';
import args from './lib/args';
const tsProject = typescript.createProject('tsconfig.json');
console.log(tsProject);
gulp.task('scripts-typescript', () => {
return gulp.src('app/scripts/**/*.ts')
.pipe(typescript(tsProject()))
.pipe(gulp.dest(`dist/${args.vendor}/scripts`))
.pipe(gulpif(args.watch, livereload()));
});
記録された出力
回答 #1
私がやったのは、この「tsc --target ES5 YourFile.ts」で ts ファイルをコンパイルすることです
回答 #2
gulp-typescript プラグインには「target」というオプションがあります。tsconfig.json ファイルを設定しても何の効果もなかったのですが、gulp タスクで target を es5 に変更したところ、問題なく動作しました。
プラグインオプション
...
.pipe(typescript(tsProject(), { target: 'ES5'}))
...
