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.jsontarget の設定に起因している。target は「どのversionのJavaScriptソースコードを出力するか」という設定である。

  • targetES3 など古い仕様をしているときに
  • TypeScript(もしくは型定義)のコードで #private など新しい記法を使っている

というときのエラーとなる。自分が書いていなくても使っているライブラリがそういった記法を使っていればビルドができない。

解決

ES2015 以上のモダンな仕様を指定するようにすればよい。

  "target": "ES2015",

おそらく大体の場合はES2017とか、もう少し新しい仕様を指定しても大丈夫になっているはずである。