【问题标题】:How typescript object cast work打字稿对象转换如何工作
【发布时间】:2014-05-04 21:13:22
【问题描述】:

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

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 时,它不应该附加任何方法。除非 typescript 在投射时做某事,否则上面的代码不应该工作。

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

【问题讨论】:

标签: javascript json typescript


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    假设您应该有另一个对象来包含行为,并且数据对象将仅包含将从服务返回的数据成员。

    此外,还有一个返回类型 jsonp,它本身就是一个从服务返回的函数,如果需要,您可能会对它感兴趣

    【讨论】:

      猜你喜欢
      • 2017-03-22
      • 1970-01-01
      • 2020-12-15
      • 2021-07-24
      • 1970-01-01
      • 2018-11-28
      • 2017-02-11
      • 2018-10-10
      • 2023-02-23
      相关资源
      最近更新 更多