我如何禁用/处理 init、toJSON

RMC*_*MCS 7 swagger typescript .net-core openapi nswag

我创建了一个 .NET core 2.2 webapi,并使用 swagger/nswag 为我的 React/typescript 应用程序生成 API。当我尝试设置一个新对象时,我收到一条ts(2739)消息:

输入'{名字:字符串;姓氏:字符串;}' 缺少来自类型 'User' 的以下属性:init, toJSON

有没有办法全局禁用/处理这个?它像它应该的那样工作,但我想摆脱错误(也许是 ts-ignore?)

我已经尝试了多种解决方案;

错误但读取数据:

const newUser: User = {
                firstName,
                lastName,
            };
Run Code Online (Sandbox Code Playgroud)

没有错误但不读取数据:

const newUser = new User ({
                firstName,
                lastName,
            });
Run Code Online (Sandbox Code Playgroud)

我也可以删除所有nswag创建的inittoJSON但这会很耗时。

.NETCore 模型(Baseclass只是 Id 和 createdAtDate)

    public class User : BaseModel
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Image { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

生成的 Typescript Nswag 代码

export interface IBaseModel {
    id?: string | null;
    creationDate?: Date | null;
    updateDate?: Date | null;
}

export class User extends BaseModel implements IUser {
    firstName?: string | null;
    lastName?: string | null;
    image?: string | null;

    constructor(data?: IUser) {
        super(data);
    }

    init(data?: any) {
        super.init(data);
        if (data) {
            this.firstName = data["firstName"] !== undefined ? data["firstName"] : <any>null;
            this.lastName = data["lastName"] !== undefined ? data["lastName"] : <any>null;
            this.image = data["image"] !== undefined ? data["image"] : <any>null;
        }
    }

    static fromJS(data: any): User {
        data = typeof data === 'object' ? data : {};
        let result = new User();
        result.init(data);
        return result;
    }

    toJSON(data?: any) {
        data = typeof data === 'object' ? data : {};
        data["firstName"] = this.firstName !== undefined ? this.firstName : <any>null;
        data["lastName"] = this.lastName !== undefined ? this.lastName : <any>null;
        data["image"] = this.image !== undefined ? this.image : <any>null;
        super.toJSON(data);
        return data;
    }
}

export interface IUser extends IBaseModel {
    firstName?: string | null;
    lastName?: string | null;
    image?: string | null;
}
Run Code Online (Sandbox Code Playgroud)

打字稿使用类作为类型

const newUser: User = {
                firstName,
                lastName,
            };
Run Code Online (Sandbox Code Playgroud)

我想禁用init&toJSON导致错误,我不需要声明它们的功能。

错误:

输入'{名字:字符串;姓氏:字符串;}' 缺少来自类型 'User' 的以下属性:init, toJSON

我想摆脱错误,而不必手动重写整个 NSWAG 生成的 API 客户端。也许我使用的类是错误的,当使用接口时,我收到相同的错误消息。

0x3*_*3ff 8

inittoJSON方法是在您创建 TypeScript 文件时将 DTO 样式设置为 Class 生成的。如果将该选项设置为界面样式,则不应实现方法,而应仅实现属性。请参阅以下裁剪图像: DTO 设置