Javascript 如何将任何类型对象分配\转换\强制转换为特定类型?

Javascript 如何将任何类型对象分配\转换\强制转换为特定类型?,javascript,angular,typescript,Javascript,Angular,Typescript,我有any类型的对象,我分配myResponse类型的对象,如下所示 public obj: any; public set Result() { obj = myResponse; } public myFunction(){ let x: MyResponse = (MyResponse) obj; conosle.log(x.somePropoerty); } export class MyResponse{ publi

我有any类型的对象,我分配myResponse类型的对象,如下所示

    public obj: any;
    public set Result() {
        obj = myResponse;
    }
public myFunction(){
    let x: MyResponse = (MyResponse) obj;
    conosle.log(x.somePropoerty);
} 
export class MyResponse{
    public property1: string;
    public property2: number;
    //some other code
}
我还有一个函数,我想将任何类型转换为我的特定类型,如下所示

    public obj: any;
    public set Result() {
        obj = myResponse;
    }
public myFunction(){
    let x: MyResponse = (MyResponse) obj;
    conosle.log(x.somePropoerty);
} 
export class MyResponse{
    public property1: string;
    public property2: number;
    //some other code
}
我在网上尝试了不同的方法,比如用于铸造的角括号、Object.assign,但都不起作用

MyResponse类如下所示

    public obj: any;
    public set Result() {
        obj = myResponse;
    }
public myFunction(){
    let x: MyResponse = (MyResponse) obj;
    conosle.log(x.somePropoerty);
} 
export class MyResponse{
    public property1: string;
    public property2: number;
    //some other code
}

TypeScript中没有强制转换,只有类型断言。通过执行以下操作,可以断言
obj
属于
MyResponse
类型:

let x: MyResponse = obj as MyResponse;

请注意,这仅用于编译时检查。如果您的
obj
在运行时不是
MyResponse
实例,那么这将不起作用。

TypeScript中没有强制转换,只有类型断言。通过执行以下操作,可以断言
obj
属于
MyResponse
类型:

let x: MyResponse = obj as MyResponse;
请注意,这仅用于编译时检查。如果您的
obj
在运行时不是
MyResponse
实例,那么这将不起作用。

在TypeScript中转换(Microsoft称之为类型断言)有两种方法

假设我们得到了以下对象定义:

class MyClass {
    public someMethod:void() {
         console.log("method invoked");
    }
    public static staticMethod(object: MyClass) {
         console.log("static method");
         object.someMethod();
    }
}
第一种类型转换方法与Java风格非常相似。您需要使用
符号

let someVariable: any = new MyClass();
someVariable.someMethod(); //won't compile
MyClass.staticMethod(someVariable); //won't compile

(<MyClass> someVariable).someMethod(); //will compile
MyClass.staticMethod(<MyClass> someVariable); //will compile
查看此链接以了解更多信息:

在TypeScript中进行强制转换(Microsoft称之为类型断言)有两种方法

假设我们得到了以下对象定义:

class MyClass {
    public someMethod:void() {
         console.log("method invoked");
    }
    public static staticMethod(object: MyClass) {
         console.log("static method");
         object.someMethod();
    }
}
第一种类型转换方法与Java风格非常相似。您需要使用
符号

let someVariable: any = new MyClass();
someVariable.someMethod(); //won't compile
MyClass.staticMethod(someVariable); //won't compile

(<MyClass> someVariable).someMethod(); //will compile
MyClass.staticMethod(<MyClass> someVariable); //will compile
查看此链接了解更多信息:

要正确转换为“类型”,基本上需要更改对象的原型。 这可以通过使用构造函数创建一个新实例,然后复制现有属性来实现

否则类型断言将只提供编译时检查!在运行时,“someMethod”将是未定义的

要正确转换为“Type”,您基本上需要更改对象的原型。 这可以通过使用构造函数创建一个新实例,然后复制现有属性来实现


否则类型断言将只提供编译时检查!在运行时,“someMethod”将是未定义的

是的,我尝试了这个,但当我尝试访问MyResponse中的属性时..它显示为未定义的..我确信属性有值..
obj
在运行时是
MyResponse
的实例吗?发布
MyResponse
的定义。是的,obj在运行时是MyResponse的实例…..我发布了MyResponse类的定义..是的,我尝试了这个,但当我尝试访问MyResponse内部的属性时..它显示为未定义..我确信属性有值..
obj
在运行时是
MyResponse
的实例吗?发布
MyResponse
的定义。是的,obj是运行时MyResponse的实例……我已经发布了MyResponse类的定义……你是什么意思?
MyResponse
是类还是接口?它是如何定义的?
obj
的内容是否至少与同一界面匹配?Explain.MyResponse是类…类有一些属性..是的,内容obj应该匹配同一个类…因为我将同一个类的实例分配给了obj,现在我正在尝试将其转换回MyResponse类。那么,通常如何从提供的一些数据中获取类实例?我很确定你经常这样做,那你为什么会认为这会有什么不同呢。想想看!新日期(0)实际做什么?
obj=myResponse
应该是
this.obj=myResponse作为myResponseMyResponse
是类还是接口?它是如何定义的?
obj
的内容是否至少与同一界面匹配?Explain.MyResponse是类…类有一些属性..是的,内容obj应该匹配同一个类…因为我将同一个类的实例分配给了obj,现在我正在尝试将其转换回MyResponse类。那么,通常如何从提供的一些数据中获取类实例?我很确定你经常这样做,那你为什么会认为这会有什么不同呢。想想看!新日期(0)实际做什么?
obj=myResponse
应该是
this.obj=myResponse作为myResponse