なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

SWC の特定バージョン以前では class-transformer が正しく動作しない

JavaScript / TypeScript の高速な Rust 実装コンパイラーである SWC ですが、特定バージョン以前だとデコレーター・クラス周りの処理があるらしく、
デコレーター・クラス周りの処理をバリバリ使っている class-transformer を使用していると、以下のようなコードが動かなくなります。

import "reflect-metadata";
import { plainToClass } from "class-transformer";

class SomeClass {
  value!: string;
}

const jsonObj = { value: "Hello, World" };

const obj = plainToClass(SomeClass, jsonObj);

console.log(obj.value); // => actual: undefined, expected: "Hello, World"

具体的なバージョンは v1.2.137 より前のバージョンで、この組み合わせを使用していると、上記コードはコメントの通り undefined が出力されます。
ので、この組み合わせで使用している場合はバージョンアップしましょう。というメモでした。

参考: