javascript - 将对象类型转换为另一种类型

标签 javascript typescript casting type-conversion

我有一个类,我设置了 range 类型至IntervalRange

export class Test {range: IntervalRange;}

然后在父类中我初始化该值:

export class TestInitializer {
Create(){
    return <Test>{
        range: IntervalRange.initialize(Database.GetByName('MONTH').id};
}

InitializeElement() {
  let test = <Test>JSON.parse(JSON.stringify(configuration));
  return test;
}

然后在我的其他组件中我将其用作:

@Input() range: IntervalRange;

但是在函数 range.getRange(); 上 我得到:ERROR TypeError: this.range.getRange is not a function

这是为什么呢?它说range是一个对象,尽管它应该是 IntervalRange .

我尝试写as IntervalRange , <IntervalRange> range 没有任何作用。如何解决这个问题?

更新:let type = typeof(this.range) ;打印"object"

方法:

ngOnChanges() {
if (this.range) {
  let type = typeof(this.range);
  let ddd = this.range.getRange(); //<----- this is where I get error
}

最佳答案

类型转换仅转换类型。 Typescript 在运行时不存在。因此,如果 JSON.parse 没有返回正确的 Test 实例(因为方法不会被序列化,所以不会返回),它将在运行时失败。您可能想要构建一个测试实例,并将序列化数据加载到其中,而不是进行类型转换。

关于javascript - 将对象类型转换为另一种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54656835/

相关文章:

javascript - 如何使用 openlayers 3 将图层上的所有功能序列化为 json

javascript - 使用 React-Konva 在 Canvas 上绘制箭头

Typescript 1.5 和 window.event.ctrlKey

Angular 4 - Http 请求错误 : You provided 'undefined' where a stream was expected

c# - C# 中对象类型转换 (as/(int)) 的区别

javascript - 将 jquery 数据发送到 struts Action

javascript - 如何在 handsontable 中获取表头名称

typescript - 相当于 Typescript 的 Babel 插件?

java - 对 checkcast 字节码指令感到困惑?

C++ get 和 typecasting 的用法区别是什么?我应该使用哪一个?