TypeScript是否支持带有对象初始值设定项的构造函数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TypeScript是否支持带有对象初始值设定项的构造函数?相关的知识,希望对你有一定的参考价值。
例如,在c#中,我们有以下代码段:
class OrderLine
{
public OrderLine(){
OrderId ="1",
ItemTitle ="2"
Console.WriteLine("constructing");
}
public string Platform { get; set; }
public string OrderId { get; set; }
public string ItemTitle { get; set; }
}
public static void Main()
{
var ol = new OrderLine
{
Platform ="p"
};
Console.WriteLine(ol.Platform);
}
在打字稿中,如果我使用{}初始化对象,则无法调用构造函数,该构造函数可以为我提供一些默认值并执行其他操作。如果我使用新关键字进行默认构造,则编译器不允许我使用对象初始化程序(我使用的是angular 6),并且必须调用ol.Platform来分配属性值。当我有多个属性来设置值时,写多个“ ol”。不如使用对象初始值设定项语法快。有没有更好的方法?
答案
您可以让构造函数接受一个对象,该对象的每个属性都可以通过Object.assign
分配给实例:
type Init = {
age: number;
gender: string;
};
class Foo {
public name: string;
public age: number | undefined;
public gender: string | undefined;
constructor(name: string, init?: Partial<Init>) {
this.name = name;
if (init) {
Object.assign(this, init);
}
}
}
const f = new Foo('bob', { age: 10 });
以上是关于TypeScript是否支持带有对象初始值设定项的构造函数?的主要内容,如果未能解决你的问题,请参考以下文章
在 C++17 中,可以使用带有初始值设定项的 if 语句来解压可选项吗?