gpt4 book ai didi

typescript - TypeScript 支持带对象初始值设定项的构造函数吗?

转载 作者:行者123 更新时间:2023-12-04 15:30:51 24 4
gpt4 key购买 nike

例如,在 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);
}

在 typescript 中,
如果我使用 {} 来初始化一个对象,我将无法调用可以给我一些默认值并做其他事情的构造函数。如果我使用 new 关键字来做一些默认构造,我的编译器不允许我使用对象初始值设定项(我使用的是 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 - TypeScript 支持带对象初始值设定项的构造函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61260538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com