我如何禁用/处理 init, toJSON

How can i disable / handle init, toJSON

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

Type '{ firstName: string; lastName: string; }' is missing the following properties from type 'User': init, toJSON

有什么方法可以全局禁用/处理这个问题吗?它像它应该的那样工作,但我想消除错误(也许是 ts-ignore?)

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

错误但读取数据:

const newUser: User = {
                firstName,
                lastName,
            };

没有错误但没有读取数据:

const newUser = new User ({
                firstName,
                lastName,
            });

我也可以删除所有 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; }
    }
}

生成的 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;
}

Typescript 使用 class 作为类型

const newUser: User = {
                firstName,
                lastName,
            };

我想禁用导致错误的 inittoJSON,我不需要声明它们即可运行。

错误:

Type '{ firstName: string; lastName: string; }' is missing the following properties from type 'User': init, toJSON

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

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