角度初始化对象来自构造函数更少的类

时间:2018-04-05 17:58:39

标签: angular constructor

你如何在打字稿中初始化无构造类的对象

export class C1 {
    prop1: string,
    prop2: string
}

在我的另一堂课中:

const obj = new C1 { prop1: 'aaa', prop2: 'bbb' }; // error on this line ( 'expecting a comma')

另外,如果我使用'let'而不是'const',我会得到一个tslint错误:标识符obj永远不会被重新分配,使用const而不是let。在这种情况下,这是否真的需要使用const?

1 个答案:

答案 0 :(得分:0)

要从 constructorless 类初始化对象,需要逐个为属性赋值。

weight = OrderLine.objects.filter(product=OuterRef('pk'), order__date__gte=date).order_by().values('product')
sum_weight = weight.annotate(total=Sum('weight')).values('total')

templates = Template.objects.filter(product=OuterRef('pk')).order_by().values('product')
count_templates = templates.annotate(count=Count('*')).values('count')

query = query.annotate(weight_sold=Subquery(sum_weight, output_field=DecimalField()),
                       template_count=Subquery(count_templates))

实际上我不知道为什么你需要一个 constructerless 类。更多,您可以使用像

这样的构造函数缩短代码的语法
const obj = new C1();
obj.prop1 = '1';
obj.prop2 = '2';

并使用构造函数

创建一个对象
export class C1 {
    constructor(public prop1: string, public prop2: string) { } 
}