2.8Symbolは、不変で一意のデータ型です。オブジェクトのプロパティ名(識別子)として使われたりします。本稿は、公式Handbook「Symbols」にもとづき、解説とコード例を大きく改めました。2015で備わりました。数値や文字列と同じく、プリミティブなデータ型です。使うときは、tsconfig.jsonのcompilerOptionsでtargetをes6にしてください。"es6",}}オブジェクトはSymbol()関数を呼び出してつくります。引数には、文字列が渡せます。数値や文字列と異なり、コンストラクタからつくることはできません。コンパイルエラーSymbolオブジェクトは、不変で一意のデータ型です。引数に同じ値を渡しても、異なるインスタンスとして扱われます。引数の文字列はデバッグで使うためのSymbolオブジェクトの説明です。falseSymbolは、オブジェクトのプロパティ名(識別子)として使えます。プロパティ名を与えるときや、オブジェクトから参照する場合には[]演算子を用いてください。2015の「計算されたプロパティ名」の構文です。valueSymbolは、オブジェクトのプロパティのほか、クラスメンバにも用いられます。5以前では開発者に公開されていなかった言語内部のふるまいを表すビルトインのSymbolがあります。これらは周知の(well-known)Symbolと呼ばれ、静的なメンバとして備わっています。イテレーションSymbol.iteratorオブジェクトのデフォルトのイテレータを返すメソッドです。for...of文で用いられます(「Symbol.iterator」参照)。正規表現Symbol.match文字列の正規表現へのマッチを定めるメソッドです。String.prototype.match()メソッドで用いられます(「Symbol.match」参照)。Symbol.replace文字列の正規表現にマッチした部分を置き換えるメソッドです。String.prototype.replace()メソッドで用いられます(「Symbol.replace」参照)。Symbol.search文字列の正規表現にマッチする文字位置のインデックスを返すメソッドです。String.prototype.search()メソッドで用いられます(「Symbol.search」参照)。Symbol.split文字列の正規表現にマッチするインデックスで文字列を分割するメソッドです。String.prototype.split()メソッドで用いられます(「Symbol.split」参照)。その他Symbol.hasInstanceコンストラクタがオブジェクトをそのインスタンスと認めるかどうか決めるためのメソッドです。instanceof演算子で用いられます(「Symbol.hasInstance」参照)。Symbol.isConcatSpreadableオブジェクトが配列要素にフラット化できるかを示すブール(論理)値です。Array.prototype.concat()メソッドで用いられます(「Symbol.isConcatSpreadable」参照)。Symbol.species派生オブジェクトを生成するために使われるコンストラクタ関数です(「Symbol.species」参照)。Symbol.toPrimitiveオブジェクトを対応するプリミティブ値に変換するメソッドです。抽象操作ToPrimitiveにより用いられます(「Symbol.toPrimitive」参照)。Symbol.toStringTagオブジェクトの文字列表現をつくるときデフォルトで使われる文字列の値です。Object.prototype.toString()メソッドで用いられます(「Symbol.toStringTag」参照)。Symbol.unscopablesオブジェクト自身と継承するプロパティ名の指定により、その値をオブジェクトのwithバインディング環境から外します(「Symbol.unscopables」参照)。