ウェブサイト検索

エラー 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'}))
...

関連記事