TypeScript 5.8 で erasableSyntaxOnly
フラグが追加される予定です。このフラグは enum
や namespace
、Class Parameter properties
などの「消去可能ではない」構文をエラーとして検知するためのものです。
// This syntax is not allowed when 'erasableSyntaxOnly' is enabled.
enum Color { Red }
// This syntax is not allowed when 'erasableSyntaxOnly' is enabled.
namespace App {
export const name = "App";
}
class User {
// This syntax is not allowed when 'erasableSyntaxOnly' is enabled.
constructor(public name: string) {}
}
このフラグは Node.js で TypeScript を直接実行できるようになったことと関連しています。Node.js で TypeScript を実行する場合、型注釈を削除して JavaScript のように実行します。その際、enum
や namespace
などの構文は単純な型注釈の削除では対応できないため、デフォルトではサポートされていません。
erasableSyntaxOnly
フラグの目的はこのような互換性の低い構文を静的に検知することです。enum
や namespace
のような古い構文はもとより使用が推奨されていないため、このフラグを有効にしておくことで、新しい構文を使うように促すことができるという利点が得られるでしょう。