打字稿对象如何投射工作

时间:2014-03-26 12:45:06

标签: javascript json typescript

我已经定义了一个类如下:

class Foo {
  p1: string;
  p2: string;
  a_method(): string{
    return p1+p2;
  }
};

我有一个服务来返回对应于Foo的JSON对象。

var foo: Foo= <Foo> restService.getOne(1);

所以上面的代码工作正常,但我想知道以下代码是否有效:

foo.a_method();

我的理解是,当JSON转换为javascript时,它不应该附加任何方法。除非打字稿在打字时做了什么,否则上面的代码不应该有效。

另外我想知道javascript一般,我应该如何实现这个cast

2 个答案:

答案 0 :(得分:7)

你怀疑它不起作用。 TypeScript没有type casting,它确实type assertion,即你告诉编译器这就是我说的这个对象,忘记你在之前推断的内容。使用类型断言时生成的javascript没有变化。

至于推荐的方法:创建一个typescript类,它接受DTO作为构造函数参数,并使用DTO填充自己。

答案 1 :(得分:0)

理想情况下,您的服务不会/不应该返回任何具有行为的对象,通常服务json对象是针对数据对象的。

前提是您应该有另一个对象来包含行为,而数据对象将只包含将从服务返回的数据成员。

要添加到那里还有一个返回类型jsonp,它本身就是从服务返回的函数,如果需要,你可能会感兴趣