Как я могу отключить / обработать init, toJSON - PullRequest
3 голосов
/ 02 октября 2019

Я создал .NET core 2.2 webapi и использую swagger / nswag для генерации API для моего приложения React / typcript. Когда я пытаюсь установить новый объект, я получаю 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 init и toJSON, но это заняло бы много времени ..

.NETCore Model (Baseclass - это просто Id и createAtDate)

    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 в качестве типа

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

Короче говоря;я хотел бы отключить init & toJSON, который вызывает ошибку, и мне не нужно указывать, чтобы они функционировали.

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

Я хотел бы избавиться от ошибок без необходимости переписывать вручную весь сгенерированный клиент NSWAG API. Может быть, я использую классы неправильно, при использовании интерфейсов я получаю то же сообщение об ошибке.

Спасибо, я заранее :)

...