| name | config-convention |
| description | Use when creating @Config classes for DI configuration. Required pattern for EnvAdaptor, LoggerConfig, JwtConfig, etc. |
@Config Convention
Pattern
import { Config } from '@zeltjs/core';
@Config
export class XxxConfig {
static readonly Token = XxxConfig;
get someValue(): string {
return 'default';
}
get anotherValue(): number {
return 100;
}
}
Rules
static readonly Token = ClassName - Self-referencing token for DI
- Getters for defaults - Use
get not properties
- Users extend to customize - Override getters in subclass
Customization
@Config
class MyEnvAdaptor extends EnvAdaptor {
override get(key: string): string | undefined {
}
}
createApp({
controllers,
configs: [MyEnvAdaptor],
})
Anti-patterns
| Bad | Good |
|---|
| Factory function returning class | Extend base class |
| Constructor params for config | Override getters |
@injectable() directly | Use @Config |
| Missing static Token | Always include Token |