2017-01-02 6 views
0

私は次のようにクラスのシリアライザを実装:typescriptは自動的にクラスインスタンスを直列化しますか?

import {File} from './file' 
import Serialization from './serializable' 

class User implements Serialization<User> { 
    username: string 
    deserialize(input) { 
    this.username = input.username 

    return this 
    } 

}

をいくつかの詳細は

を省略しているが、私は私がする必要がある、直列化を行うとJSONにこのオブジェクトを変換すると考えられこのデシリアライザで書いたものとは逆のシリアライザを実装してください。

私がするときに困惑するものは、です:

app.use('/abc', (req, res) => { 
    getLoggedInUser(sessionToken) 
    .then(
     user => { 
     const tmp: User = s 
     res.send(tmp) 
     } 
    ).catch(
     err => { 
     console.log("err =" + JSON.stringify(err)) 
     } 
) 

expressは、このUserオブジェクトのJSONバージョンを実際に返しました。

私はこの動作に非常に驚いています。それは自動的にtypescriptによって行われるので、私はシリアライザが必要ないということですか?または私は何かを逃している?

答えて

1

オブジェクトまたは配列の場合は、それをJSONとしてストリングします。 Expressのドキュメントから:

パラメータが配列またはオブジェクトである、Expressは JSON表現で応答:返信用

res.send({ user: 'tobi' }); 
res.send([1,2,3]); 

https://expressjs.com/en/api.html#res.send

+0

感謝を。それがクラスのインスタンスであっても、この動作をしますか? –

+0

クラスのインスタンスは単なるオブジェクトです。関数を無視し、独自のプロパティを文字列化します。 – elclanrs

関連する問題