【问题标题】:Unable to create typescript class object无法创建打字稿类对象
【发布时间】:2017-09-10 16:18:00
【问题描述】:

Typescript 新手,我遇到了 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"
};

【问题讨论】:

    标签: class oop typescript object new-operator


    【解决方案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 运算符。

    【讨论】:

    • 感谢您的选择...构造函数版本也最适合我。
    • 很高兴为您提供帮助:)
    【解决方案2】:

    你的班级:

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

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

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

    尝试对第二行执行此操作:

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

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 2018-12-13
      • 2020-12-01
      • 2020-12-14
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多