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