#TypeScript
## 事象
以下のようなコードでエラーになる。[[IntelliJ IDEA]]でエラーにならない。
```ts
declare const _brand: unique symbol;
export class SpotId extends PrimitiveValueObject<string> {
private [_brand]: void;
// ...
}
```
## 原因
`declare const _brand: unique symbol;` は宣言のためRuntime時に削除される。一方 `[_brand]` はRuntime時も残るためRuntime Errorになる。
## 対策
`declare`ではなく`Symbol()`で値を代入する。
```ts
const _brand = Symbol();
export class SpotId extends PrimitiveValueObject<string> {
private [_brand]: void;
// ...
}
```
Runtimeコードにゴミが残ってしまうのが難点。