In my TypeScript code, I have defined a custom Logger class with specific options. The DefaultLevel type is created as a union of 'info' and 'error'. The LoggerOptions interface includes two generics, CustomLevels and Level, where CustomLevels allows for custom log levels and Level extends either the custom levels or the default ones. When initializing the Logger class with certain options, including custom levels and a default level, an issue arises in the log function. Attempting to log a message at a different level than the specified default results in a type error. My question pertains to why the LoggerOptions interface can accept a wider range of level types (such as 'debug' or 'trace'), but the variables specified as Level are restricted to a smaller set within the code itself. Although I recognize that I could modify the log method to accept a broader range of level types, utilizing the more defined Level type would offer a cleaner solution.