2017-06-01 5 views
0

私はサーバーと通話する機能を持っています。これらのパラメータを取得することの1つを「ユーザー状態」と呼びます。このユーザー状態はオブジェクトです。私は、このオブジェクトからこれを取得:どのように私はクラスにtypescriptでincommingオブジェクトを作ることができますか?

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 

:) ありがとうございます

+0

ない私を拡張:

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

唯一の問題は、あなたがインデクサが使用してそれらにアクセスする必要がありますということですエクスポートを書きたい –

+0

[JSONオブジェクトでtypescriptオブジェクトを初期化するにはどうすればいいですか?](https://stackoverflow.com/questions/22885995/how-do-i-initialize-a-typescript-object-with- a-js onオブジェクト) – Amid

+0

sry私は重複を作っていません –

答えて

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); 
+0

問題はこれです:私は - を持つオブジェクトを取得します。私はこのクラスをオブジェクトにすることはできません。私はこのようなものを使いたいと思っています。書くときは、それがどのような特徴を持っているのかを教えてください。 –

+0

例:userstate。そして今私はそれが持っているもののリストを得る。私はいつもこれをやりたいとは思わない:userstate ['display-name']、これは悪いと思うからだと思う。 –

+0

@Darky_Chanしかし、 '[member-name]'表記なしで '-'を使ってメンバーにアクセスすることはできない。だから、 'userstate.display-name'があなたの望むものならそれをすることはできません。あなたのJSONデータがハイフンを持っていることを理解していますが、私が示したように 'Userstate'インスタンスに変換すると、インスタンスにアクセスできます:' instance.displayName' – Saravana

0

はtypescriptですspecsによると、あなたは、プロパティ名含む、無効な識別子を持つことができます。

const u = new Userstate(); 
u["display-name"] = 23; 
関連する問題