如何在js中创建一个复杂对象的dto



我是NestJs的初学者,我想创建以下结构体的dto:

我想创建一个API,可以使用dto返回这个对象。

export let Week = [
{
DayName : "TuesDay",
TimeZone: [
{
First: {
Start: 18,
end: 19,
isReserved: false,
reserver: "someone"
},
Second: {
Start: 19,
end: 20,
isReserved: false,
reserver: "someone"
},
Third: {
Start: 20,
end: 21,
isReserved: false,
reserver: "someone"
}
}
]
},
{
DayName : "Wednesday",
TimeZone: [
{
First: {
Start: 18,
end: 19,
isReserved: false,
reserver: "someone"
},
Second: {
Start: 19,
end: 20,
isReserved: false,
reserver: "someone"
},
Third: {
Start: 20,
end: 21,
isReserved: false,
reserver: "someone"
}
}
]
},
{
DayName : "Friday",
TimeZone: [
{
First: {
Start: 18,
end: 19,
isReserved: false,
reserver: "someone"
},
Second: {
Start: 19,
end: 20,
isReserved: false,
reserver: "someone"
},
Third: {
Start: 20,
end: 21,
isReserved: false,
reserver: "someone"
}
}
]
}
]

我尝试了以下dto,但在服务提供程序中出现错误:

我创建了3个类OneSessionResponseDto, SessionsResponseDto和WeekResponseDto,所以我可以使用它们作为上面对象的dto。

export class OneSessionResponseDto {
start: number;
end: number;
isReserved: boolean;
reserver: string;
}
export class SessionsResponseDto {
First: OneSessionResponseDto;
Second: OneSessionResponseDto;
Third: OneSessionResponseDto;
}
export class WeekResponseDto {
DayName: string;
TimeZone: SessionsResponseDto;
}

这是服务提供者类:

@Injectable()
export class AppService {
private week = Week;
getWeek() : WeekResponseDto[] {
return (this.week); <= the error
}
}

我在这里得到了这个错误:

缺少类型'SessionsResponseDto'的以下属性:First, Second, Third

你就快成功了。您需要将TimeZone的类型设置为SessionsResponseDto[],因为它是一个数组。然后将OneSessionResponseDto#start更改为OneSessionResponseDto#Start(大写字母很重要)。您可以在这里的typoescript playground中看到一个有效的解决方案

最新更新