2017-01-02 85 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版本。

我很惊讶这种行为。这是否意味着我不需要序列化程序,因为它是由打字机自动完成的?或者我错过了什么?

回答

1

如果它是一个对象或数组,它会将其串化为JSON。从快递文档:

当参数是一个数组或对象,表达对 JSON表示响应:

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

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

+0

感谢您的答复。即使它是一个类的实例,它也会有这种行为? –

+0

一个类的实例只是一个对象。它将忽略这些函数并将其自身的属性串联起来。 – elclanrs