在Typescript中,每个带访问器的构造函数参数都被识别为类成员。
class Test {
constructor(private arg1, private arg2) { }
~~~~ ~~~~ recognized as members
}
你可以使用"options "
class Test2 {
constructor({arg1, arg2}: {arg1: string, arg2: number}) { }
}
或
class Test3 {
constructor(options: {arg1: string, arg2: number}) { }
}
那么,是否有任何方法可以基于options对象的构造函数中的每个参数来定义成员?
:
class Test4 {
constructor({private arg1, private arg2}: {arg1: string, arg2: number}) { }
}
必须独立定义类成员吗?
class Test4 {
private arg1: string
private arg2: number
constructor({arg1, arg2}: {arg1: string, arg2: number}) {
this.arg1 = arg1
this.arg2 = arg2
}
}
下面是你可以用TypeScript做的最好的事情。
class Test1 {
constructor(private arg1: string) {}
}
class Test2 {
constructor(private options: { arg1: string; arg2: number }) {}
}
我认为你要做的是解构options
并在类中设置它们的属性。不能在构造函数的参数中直接解构options
的属性。构造函数中的这一行可能会有帮助
class Test2 {
constructor(private options: { arg1: string; arg2: number }) {
Object.assign(this, options)
}
}
但是这个解决方案的问题是,你没有得到this.arg1
和this.arg2
的类型注释,即使它们存在于类中。所以最好还是分别分配每个属性