【发布时间】:2021-02-17 04:17:53
【问题描述】:
Class transformer library 提供了将 json 格式的普通 javascript 对象转换为 ES6 类的函数
但是我看到当json对象中的类型和类中定义的类型不匹配时它不会抛出任何错误
类如下所示
class MyClass {
id: string;
name: string;
age: number; // here is where i put a "abc" to test
@Type(() => Date)
date: Date;
}
在 myclass2 上它可以正常工作,因为 age(23) 是一个数字。但在 myclass1 中,年龄设置为“abc”,不能转换为类中定义的数字类型。然而代码通过没有任何错误。
const json1 = {id: "123", name: "bob", age: "abc", date: "12/15/2019"};
const json2 = {id: "123", name: "bob", age: 23, date: "12/15/2019"};
const myclass1 = plainToClass(MyClass, json1);
const myclass2 = plainToClass(MyClass, json2);
console.log("myclass1", myclass1);
console.log("myclass2", myclass2);
在控制台日志中可以看到虽然年龄的类型已经明确定义,但年龄的值仍然可以设置为字符串。
console log image here(我没有足够的RP点来附加一个url,这是一个新帐户)
我的问题是如何获得有关此类不匹配的警告/错误列表。
感谢您的帮助。
【问题讨论】:
-
文档很清楚,它只是一个简单的serdes库,还有does not do type checking or coercion unless you enable it。
-
好的,但是它没有提到当它无法转换为打字稿类型时的行为是什么。所以答案是类转换器在将 json 对象转换为 typescript 类时并没有真正进行类型检查并给出错误列表?
-
运行时没有“打字稿类型”。它只是按原样使用输入值。生成的类实例将只是具有错误的属性,就像您所经历的那样。
标签: javascript typescript class-transformer