azukiazusa

azukiazusa

TypeScript 5.8 で追加される erasableSyntaxOnly フラグ

TypeScript 5.8 で erasableSyntaxOnly フラグが追加される予定です。このフラグは enumnamespaceClass Parameter properties などの「消去可能ではない」構文をエラーとして検知するためのものです。

azukiazusa

azukiazusa

// 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) {}
}
azukiazusa

azukiazusa

このフラグは Node.js で TypeScript を直接実行できるようになったことと関連しています。Node.js で TypeScript を実行する場合、型注釈を削除して JavaScript のように実行します。その際、enumnamespace などの構文は単純な型注釈の削除では対応できないため、デフォルトではサポートされていません。

azukiazusa

azukiazusa

erasableSyntaxOnly フラグの目的はこのような互換性の低い構文を静的に検知することです。enumnamespace のような古い構文はもとより使用が推奨されていないため、このフラグを有効にしておくことで、新しい構文を使うように促すことができるという利点が得られるでしょう。