export interface ICompanyCardItem { id : string ; slug : string ; name : string ; desc : string ; numRatings : number ; avgRating : number ; logoSrc : string ; jobLocations : string [ ] ; websiteUrl : string | null ; } export interface IJobCardItem { id : string ; companyName : string ; name : string ; location : string | null ; minHourlySalary : number ; maxHourlySalary : number ; hourlySalaryCurrency : string ; numRatings : number ; avgRating : number ; } export interface IReviewJobCardItem { id : string ; companyName : string ; jobName : string ; jobLocation : string ; date : InternPlusISODate | null ; overallRating : number ; body : string | null ; tags : string [ ] | null ; } export interface IReviewUserCardItem { id : string ; author : string ; jobLocation : string ; relativeDate : string ; overallRating : number ; body : string | null ; tags : string [ ] | null ; } export type IGenericCardItem = ICompanyCardItem | IJobCardItem | IReviewJobCardItem | IReviewUserCardItem ; export const isCompanyCardItem = ( item ) : item is ICompanyCardItem => "id" in item && "websiteUrl" in item ; export const isJobCardItem = ( item ) : item is IJobCardItem => "location" in item && "hourlySalaryCurrency" in item ; export const isReviewJobCardItem = ( item ) : item is IReviewJobCardItem => "body" in item && "companyName" in item ; export const isReviewUserCardItem = ( item ) : item is IReviewUserCardItem => "body" in item && "author" in item ;