我已经定义了一个类如下:
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
。
答案 0 :(得分:7)
你怀疑它不起作用。 TypeScript没有type casting
,它确实type assertion
,即你告诉编译器这就是我说的这个对象,忘记你在之前推断的内容。使用类型断言时生成的javascript没有变化。
至于推荐的方法:创建一个typescript类,它接受DTO作为构造函数参数,并使用DTO填充自己。
答案 1 :(得分:0)
理想情况下,您的服务不会/不应该返回任何具有行为的对象,通常服务json对象是针对数据对象的。
前提是您应该有另一个对象来包含行为,而数据对象将只包含将从服务返回的数据成员。
要添加到那里还有一个返回类型jsonp,它本身就是从服务返回的函数,如果需要,你可能会感兴趣