enum LoggingLevel { Silent = 0, Success = 1, Error = 1, Warning = 2, Info = 3, Debug = 4, Verbose = 5, } const isLoggingLevel = (something: any): something is LoggingLevel => { return [ LoggingLevel.Silent, LoggingLevel.Success, LoggingLevel.Error, LoggingLevel.Warning, LoggingLevel.Info, LoggingLevel.Debug, LoggingLevel.Verbose ].includes(something) } interface LogMessage { level: LoggingLevel, date: Date, output: any, } const isLogMessage = (something: any): something is LogMessage => { return isLoggingLevel(something?.level) && something?.date instanceof Date; } export { LoggingLevel, LogMessage, isLoggingLevel, isLogMessage }