繁体   English   中英

Typescript object 可选的初始值设定项错误,默认属性在构造函数简写中声明

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM