Kind: Type
Source: packages/common/module-utils/interfaces/configurable-module-cls.interface.ts
Part of: Common
Class that represents a blueprint/prototype for a configurable Nest module. This class provides static methods for constructing dynamic modules. Their names can be controlled through the "MethodKey" type argument.
ConfigurableModuleCls describes the class produced by Nest’s configurable module utilities. It defines the static registration methods that create DynamicModule definitions, including custom method names such as forRoot and forRootAsync.
Definition
ts{ new (): any; } & Record< `${MethodKey}`, ( options: ModuleOptions & Partial<ExtraModuleDefinitionOptions>, ) => DynamicModule > & Record< `${MethodKey}Async`, ( options: ConfigurableModuleAsyncOptions< ModuleOptions, FactoryClassMethodKey > & Partial<ExtraModuleDefinitionOptions>, ) => DynamicModule >
Diagram
mermaidgraph LR Builder[ConfigurableModuleBuilder] --> GeneratedClass[ConfigurableModuleCls] GeneratedClass --> SyncMethod[forRoot / register] GeneratedClass --> AsyncMethod[forRootAsync / registerAsync] SyncMethod --> DynamicModule[DynamicModule] AsyncMethod --> DynamicModule DynamicModule --> NestApp[Nest application imports]
Usage
tsimport { Module } from '@nestjs/common';
import {
ConfigurableModuleBuilder,
ConfigurableModuleCls,
} from '@nestjs/common';
interface CacheModuleOptions {
ttl: number;
prefix?: string;
}
const { ConfigurableModuleClass } =
new ConfigurableModuleBuilder<CacheModuleOptions>()
.setClassMethodName('forRoot')
.build();
export class CacheModule extends ConfigurableModuleClass {}
const CacheConfigurableModule: ConfigurableModuleCls<
CacheModuleOptions,
'forRoot'
> = CacheModule;
@Module({
imports: [
CacheConfigurableModule.forRoot({
ttl: 60,
prefix: 'app:',
}),
],
})
export class AppModule {}
AI Coding Instructions
- Use
ConfigurableModuleClswhen a helper, factory, or abstraction needs to accept a generated configurable module class. - Keep the
MethodKeygeneric aligned with the method configured throughsetClassMethodName(), such as'forRoot'. - Prefer extending the generated
ConfigurableModuleClasswhen defining the public Nest module class. - Use the generated synchronous or asynchronous registration method in a module’s
importsarray, since each call returns aDynamicModule. - Do not instantiate configurable module classes directly; use their static registration methods instead.
Was this page helpful?