created: 2022-01-27T08:27:42.000Z
TypeScript で error TS18028: Private identifiers are only available when targeting ECMAScript 2015 and higher
TypeScriptのビルド時に以下のようなエラーに遭遇した。
error TS18028: Private identifiers are only available when targeting ECMAScript 2015 and higher
$ ./scripts/deploy.sh --function myfunc
node_modules/cloudevents/dist/event/cloudevent.d.ts:15:5 - error TS18028: Private identifiers are only available when targeting ECMAScript 2015 and higher.
15 #private;
~~~~~~~~
Found 1 error.
これは tsconfig.json
の target
の設定に起因している。target
は「どのversionのJavaScriptソースコードを出力するか」という設定である。
target
がES3
など古い仕様をしているときに- TypeScript(もしくは型定義)のコードで
#private
など新しい記法を使っている
というときのエラーとなる。自分が書いていなくても使っているライブラリがそういった記法を使っていればビルドができない。
解決
ES2015
以上のモダンな仕様を指定するようにすればよい。
"target": "ES2015",
おそらく大体の場合はES2017とか、もう少し新しい仕様を指定しても大丈夫になっているはずである。