打字稿:如何根据同一界面中的布尔值排除选项?

问题描述 投票:0回答:3

我有一个接口,我正在尝试实现这个:

export interface Passenger {
       id: number,
       name: string,
       checkedIn: boolean,
       checkedInDate?: Date // <- How to make this optional only if checkedIn = false
}
javascript angular typescript
3个回答
0
投票

您无法在界面中声明此内容。但是,您可以在类中实现此行为:

export class Passenger {
   id: number;
   name: string;
   checkedInDate?: Date;

   get checkedIn() {
      return this.checkedInDate != null;
  }       
 }

0
投票

为什么当checkedInDate为真时你不要忽略变量checkedIn的值,这样的事情是这样的

if(!pessageobj.checkedIn) {
 pessageobj.checkedInDate = new Date();
} else {
pessageobj.checkedInDate =  some default date like min date;
}

0
投票

你可以定义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
}
© www.soinside.com 2019 - 2024. All rights reserved.