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
が出力されます。
ので、この組み合わせで使用している場合はバージョンアップしましょう。というメモでした。
参考: