【发布时间】:2019-08-16 09:26:02
【问题描述】:
我正在从 CSV 文件中读取 Todo 实例,而 Papaparse 不会对日期进行动态转换,因此我可以将对象放入其自己的构造函数中进行转换:
class Todo {
public dueDate:Date;
....
constructor(todo:Todo) {
this.dueDate = new Date(todo.dueDate);
...
}
}
是否存在通过构造函数初始化属性的更巧妙的方法
【问题讨论】:
-
我不相信,但你可以这样做stackoverflow.com/questions/32413025/…
-
我试过
Object.assign但它没有进行日期转换 - 只是分配了构造函数对象上的相同字符串... -
也许我没有完全理解你的问题。我想你问如何在构造函数上初始化值而不指定每个值,在这种情况下
Object.assign是你要找的。它不会处理您要对这些属性执行的任何其他逻辑,但您可以在分配中执行...Object.assign(this, todo, {dueDate: new Date(todo.dueDate)}) -
所以你输入错误的构造函数参数?它根本不接受
Todo,而是类似{[K in keyof Todo]: Todo[K] extends Date ? string : Todo[K]}(在您的精简示例中表示{dueDate: string}) -
@jcatz - 没有构造函数参数采用
Todo类实例的参数。虽然它不是一个有效的实例,因为日期是一个字符串。所以在构造函数中,日期字符串被包装在一个新的Date对象中。这样就可以使用@IsDate验证注解来验证实例。
标签: javascript node.js angular typescript