父类包含子类列表使用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
按赞同
/
按时间
莫莫莫小贝

该问题是因为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
相关问题
HarmonyOS class-transformer问题
501浏览 • 1回复 待解决
HarmonyOS如何获取一个名称
836浏览 • 4回复 待解决
HarmonyOS 平台的崩溃规则文档
58浏览 • 1回复 待解决
如何进行系统崩溃监控?
726浏览 • 1回复 待解决
求js 中 class名动态绑定的问题?
6456浏览 • 1回复 待解决
url string如果前后有空格崩溃
382浏览 • 1回复 待解决