父类包含子类列表使用class-transformer进行discriminator会启动崩溃

父类包含子类列表使用class-transformer进行discriminator会启动崩溃,提示:Error message:B is not initializedSourceCode:{ value: B, name: ‘b’ },

代码如下:

//定义 
export class A { 
  type:string = ‘b’ 
  @Type(() => A,myDiscriminator()) 
  components?: B[] 
} 
 
export class B extends A { 
} 
 
export function myDiscriminator(): ESObject { 
  return { 
    keepDiscriminatorProperty: true, 
    discriminator: { property: ‘type’, 
      subTypes: [ 
        { value: B, name: ‘b’ }, 
      ], 
    } 
  } 
} 
 
//在另一个文件使用 
let a = plainToClass(A, json)
HarmonyOS
2024-05-11 15:23:03
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fiftystep

该问题是因为class 跟function不一样,没有变量提升,可以把class B放在上面试试:

import {Type} from “class-transformer”; 
import “reflect-metadata” 
export class B { 
  constructor() { 
  } 
} 
 
export class A { 
  type:string = ‘b’ 
  @Type(() => A,myDiscriminator()) 
  components?: B[] 
} 
 
export function myDiscriminator(): ESObject { 
  return { 
    keepDiscriminatorProperty: true, 
    discriminator: { property: ‘type’, 
      subTypes: [ 
        { value: B, name: ‘b’ }, 
      ], 
    } 
  } 
}
分享
微博
QQ
微信
回复
2024-05-12 22:10:57
相关问题
求js 中 class名动态绑定的问题?
4838浏览 • 1回复 待解决
组件如何与孙子组件进行状态同步
404浏览 • 1回复 待解决
使用OkHttp访问本地接口失败?
7951浏览 • 2回复 待解决
class使用闭包方式初始化 默认值丢失
125浏览 • 1回复 待解决
分组列表实践(嵌套列表
27浏览 • 0回复 待解决