我如何禁用/处理 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
创建的 init
和 toJSON
但这会很耗时。
.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,
};
我想禁用导致错误的 init
和 toJSON
,我不需要声明它们即可运行。
错误:
Type '{ firstName: string; lastName: string; }' is missing the following properties from type 'User': init, toJSON
我想消除错误,而不必手动重写整个 NSWAG 生成的 API 客户端。也许我使用的 classes 是错误的,在使用接口时我得到相同的错误消息。
init
和 toJSON
方法是在创建 TypeScript 文件时生成的,将 DTO 样式设置为 Class。如果将该选项设置为接口样式,则不应实现方法,而应只实现属性。
请参阅以下裁剪图像:
DTO settings
我创建了一个 .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
创建的 init
和 toJSON
但这会很耗时。
.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,
};
我想禁用导致错误的 init
和 toJSON
,我不需要声明它们即可运行。
错误:
Type '{ firstName: string; lastName: string; }' is missing the following properties from type 'User': init, toJSON
我想消除错误,而不必手动重写整个 NSWAG 生成的 API 客户端。也许我使用的 classes 是错误的,在使用接口时我得到相同的错误消息。
init
和 toJSON
方法是在创建 TypeScript 文件时生成的,将 DTO 样式设置为 Class。如果将该选项设置为接口样式,则不应实现方法,而应只实现属性。
请参阅以下裁剪图像:
DTO settings