无法创建typescript类对象

时间:2017-09-10 16:18:00

标签: class oop typescript object new-operator

打字稿的新手,我遇到了类似以下的Typescript类。

export class Errors {
    errors: { [key: string]: string } = {};
}

我正在尝试手动创建此错误对象。你能用这个吗?我尝试了以下内容。

errList: Errors = new Errors();

errList = {'key':'value'};

errList = [
      {
        Key: "code1",
        value: "err1"
      },
      {
        Key: "code2",
        value: "err2"
      },
    ]

errList.errors = {
    [key1]:"myValueX" , [key3]:"myValueY"
};

2 个答案:

答案 0 :(得分:1)

要在声明它时初始化类,您必须使用:

var err = new Errors();
err.errors = {
    "key": "value"
};

另一种选择是定义一个构造函数,然后你可以像这样初始化:

export class Errors {
    constructor(public errors: { [key: string]: string } = {}){};
}

var err = new Errors({
    "key": "value"
});

如果您在类上没有任何错误,您也可以使用接口,然后您不需要构造函数,您可以只使用对象文字进行初始化:

export interface  Errors {
    errors: { [key: string]: string };
}

var err: Errors = {
    errors: {  "key": "value" }
};

您选择哪一个是优先选择和您的用例。我会选择构造函数版本,因为初始化最简洁,但也允许你使用instanceof运算符,而接口版本则没有。

答案 1 :(得分:0)

你的班级:

export class Errors {
    errors: { [key: string]: string } = {};
}

有一个数据成员errors,但您只能这样做:

errList: Errors = new Errors();
errList = {'key':'value'};

尝试替换第二行:

errList.errors = {'key', 'value'};