2017-09-10 38 views
1

新打字稿,我遇到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" 
}; 

回答

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运算符,而接口版本则不是。

+0

谢谢对于选项...构造函数版本对我来说也是最好的。 – Davvit

+0

很高兴帮助:) –

0

你的类:

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

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

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

尝试这样做,而不是第二行:

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