首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在类型记录中将普通类转换为泛型类

在类型记录中将普通类转换为泛型类
EN

Stack Overflow用户
提问于 2022-06-14 13:10:26
回答 3查看 199关注 0票数 1

我有一个类来获取JSON对象,并将它们转换为我想要的类。代码在下面。

代码语言:javascript
复制
import {plainToClass} from "class-transformer";
import UserDto from "../../auth/dto/user.dto";

class ConvertJson {
    
    userData(data) {
        return plainToClass(UserDto, data);
    }
}

当我想将类转换为泛型类时

代码语言:javascript
复制
import {plainToClass} from "class-transformer";
import UserDto from "../../auth/dto/user.dto";

class ConvertJson<T> {

    userData(data) {
        return plainToClass(T, data);
    }
}

我知道这个错误

T仅指类型,但在这里用作值

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-06-15 09:29:23

在调整代码之后,我发现类型记录泛型与C#或其他语言非常不同,所以我将代码转换为这个,所以它有一个泛型的氛围,但没有语法。

代码语言:javascript
复制
import {plainToClass} from "class-transformer";

interface IClass {
    new (...args : any[])
}

class ConvertJson {

    constructor(private dto : IClass) {
    }

    userData(data) {
        return plainToClass(this.dto, data);
    }
}

我之所以使用IClass而不是任何类型,是因为我希望确保其他队友使用类,而不是其他类型。

票数 1
EN

Stack Overflow用户

发布于 2022-10-21 17:50:27

从Milad的评论中提升

class-transformer提供了一些泛型类来执行与他介绍的相同的操作。

代码语言:javascript
复制
import { plainToClass, ClassConstructor } from "class-transformer";

class ConvertJson {
    userData<TargetClass>(data: unknown, dtoClass: ClassConstructor<TargetClass>) {
        return plainToClass(dtoClass, data);
    }
}

我的class-transformer版本是0.5.1

✍备注:

plainToClasss被废弃为❌

使用plainToInstance代替✅(相同)

票数 1
EN

Stack Overflow用户

发布于 2022-06-14 13:17:38

我想你想要做的是按照输入类型转换输出。

代码语言:javascript
复制
class ConvertJson<T> {
    userData(data) {
        return <T>plainToClass(data);
    }
}
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72617572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档