Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象强制转换为与Typescript中我的接口相同的类型_Typescript - Fatal编程技术网

将对象强制转换为与Typescript中我的接口相同的类型

将对象强制转换为与Typescript中我的接口相同的类型,typescript,Typescript,我想用“AdminUser”界面的结构重新格式化我的数据。但是在typecase“~as~”之后,结果与之前完全相同 所以,我只需要编写更长的代码 强制转换不起作用,所以我改变了定义类的方式 定义的新类 这是可行的,但它不是我所期望的Typescript用法。和完全无用和混乱的代码 如何使用接口重新选择对象成员?“强制转换不起作用”——JavaScript和TypeScript不支持强制转换数据作为adminPermission.AdminUser被调用,它对代码没有任何作用。它只是告诉TS编译

我想用“AdminUser”界面的结构重新格式化我的数据。但是在typecase“~as~”之后,结果与之前完全相同

所以,我只需要编写更长的代码

  • 强制转换不起作用,所以我改变了定义类的方式
  • 定义的新类
  • 这是可行的,但它不是我所期望的Typescript用法。和完全无用和混乱的代码


    如何使用接口重新选择对象成员?

    “强制转换不起作用”——JavaScript和TypeScript不支持强制转换<代码>数据作为adminPermission.AdminUser被调用,它对代码没有任何作用。它只是告诉TS编译器:“不要抱怨,我知道我在做什么”。@axiac哦,谢谢。我现在已经搜索了类型断言。所以我明白了!但是,在我的案例中有什么好的方法吗?你能更详细地解释你的用例吗?或者提供一个例子,这样我就可以向自己演示这个问题了?如果
    origData
    AdminUser
    具有所有相同的属性,那么它就是一个
    AdminUser
    ,您不需要对它做任何事情(除了可能使用类型断言来告诉编译器
    origData
    的元素是
    AdminUser
    之外)。具体来说,如果只使用类型断言版本,会出现什么问题?如果有人能像这样直接进入一个独立的IDE,这将有助于其他人为您提供解决方案。@jcalz非常感谢您就可复制的示例向我提供建议。()这是一个示例代码!啊,这个问题以前问过。让我用他们的答案连接到其他问题。您必须做一些运行时工作才能实现这一点。
    let adminList = origData.map((data) => { return data as adminPermission.AdminUser })
    
    export interface AdminUser {
      uid: string
      displayName: string
      email: string
      emailVerified: boolean
      isAnonymous: boolean
      photoURL: string
    }
    
    let adminList = origData.map((data) => {
      let newData = new adminPermission.AdminUser(data)
      return newData
    })
    
    export class AdminUser {
      constructor(object: any) {
        this.uid = object.uid
        this.displayName = object.displayName
        this.email = object.email
        this.emailVerified = object.emailVerified
        this.isAnonymous = object.isAnonymous
        this.photoURL = object.photoURL
      }
    }