如何在类的脚本中创建一个incomming对象?

时间:2017-06-01 05:51:10

标签: class typescript

我有一个与服务器通信的功能。其中一个获取参数被称为" userstate"。这个用户是一个对象。我从这个对象得到了这个:

userstate = {
    'username' = '',
    'display-name' = ''
};

我怎样才能上课呢?我现在有这个:

extends class Userstate {
    username: string;
    displayName: string;

    constructior() {
        this.username = this['username'];
        this.displayName = this['display-name'];
    }
}

在我的功能中,我这样做:

let get_user_stuff = (userstate: Userstate) => {
    console.log(userstate.username);
    console.log(userstate.displayName);
}; 

我的控制台说:

darky_chan
undefined

我希望你能帮助我:) 提前致谢

2 个答案:

答案 0 :(得分:1)

你在寻找这样的东西:

class Userstate {
    username: string;
    displayName: string;

    constructor(jsonObject: any) { // Notice the json object passed to constructor
        this.username = jsonObject.username;
        this.displayName = jsonObject['display-name'];
    }
}

let convertToInstance = (jsonObj: any) => (new Userstate(jsonObj));

let instance = convertToInstance({
    'username': 'name',
    'display-name': 'd-name'
});

console.log(instance);
console.log(instance.displayName);

答案 1 :(得分:0)

根据typescript specs,您可以拥有包含无效标识符的属性名称:

class Userstate
{
    username: string;
    "display-name": string;
}

唯一的问题是您必须使用索引器访问它们:

const u = new Userstate();
u["display-name"] = 23;