[英]Typescript object initializer error for optional with default property declared in constructor shorthand
像这样声明构造函数时:
export class Test {
constructor(
public name: string,
public value: number = -1) {
}
}
请记住,在官方 TS 文档中,它是这样写的:
在所有必需参数被视为可选参数之后出现的默认初始化参数,就像可选参数一样,在调用它们各自的 function 时可以省略。
尝试这个时:
let test: Test = {name: 'xxx'};
我收到此错误:
TS2741:类型“{名称:字符串;”中缺少属性“值”; }' 但在类型 'Test' 中是必需的。
如果我尝试显式声明可选参数:
public value?: number = -1
我得到这个:
TS1015:参数不能有问号和初始值设定项。
有一种方法可以完成你想要的。 您需要在 class 上将value
声明为public
财产,并将其设为可选。 然后,您可以在构造函数中获取一个名为value
的参数,该参数将是该构造函数 function 的本地参数。然后在您的构造函数中,您可以将“value”参数中的值分配给“class”实例 object 上的“value”属性。
class Test {
public value?: number;
constructor(
public name: string,
value: number = -1) {
this.value = value;
}
}
const a: Test = { name: '' };
const b= new Test('');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.