在Typescript中将另一个类转换为对象

时间:2016-08-23 08:54:26

标签: typescript casting

我有一类FooError

class FooError{
    code: number;
    message: string;
    data: Object;
}

在Angular2中,我在服务中做了如下的http帖子:

export class FooService{
    ...some other code...
    get(){

    this._http.post(url, data, options)
        .map(res => res.json())
        .map(data => {
            if(data.error){
                throw data.error
            }
            return data.result
        })
        ....

现在,因为在订阅这篇文章Observable时可以抛出任何类型的错误。

E.g。

如果a)服务器死了,b)代理后面的后端死了c)等,将返回响应(错误对象类类型)。

我如何投射" data.error"到FoorError类,所以我可以区分我在调用后收到的错误。

我曾经尝试过但没有工作

let error:FooError = <FooError> data.error;
throw error;

我也尝试过Javascript方式,也可以运行

Object.create(FooError, data.error)

1 个答案:

答案 0 :(得分:3)

http请求返回没有附加任何类型信息的普通JSON对象。您将其强制转换为只允许编译时间检查顺利运行,但不会更改仍为Object的对象的实际类型。

因此,如果您想拥有OdooError的实际实例 - 您必须从收到的JSON对象手动构造它。不幸的是,Naitive javascript JSON反序列化不提供这种可能性。

以下是有关该主题的更多信息:link

我个人对同一事件的尝试:github