我有一个接口,我正在尝试实现这个:
export interface Passenger {
id: number,
name: string,
checkedIn: boolean,
checkedInDate?: Date // <- How to make this optional only if checkedIn = false
}
您无法在界面中声明此内容。但是,您可以在类中实现此行为:
export class Passenger {
id: number;
name: string;
checkedInDate?: Date;
get checkedIn() {
return this.checkedInDate != null;
}
}
为什么当checkedInDate
为真时你不要忽略变量checkedIn
的值,这样的事情是这样的
if(!pessageobj.checkedIn) {
pessageobj.checkedInDate = new Date();
} else {
pessageobj.checkedInDate = some default date like min date;
}
你可以定义Union Type:
export type Passenger = {
id: number,
name: string,
checkedIn: true,
checkedInDate: Date
} | {
id: number,
name: string,
checkedIn: false
checkedInDate?: Date // you can just this field
}