【发布时间】:2020-01-01 09:35:06
【问题描述】:
我有以下结构:
export interface AppConfig {
encryptionKey: string;
db: TypeOrmModuleOptions;
}
export interface BrandsConfig {
/**
* Brand name
*/
[key: string]: AppConfig;
}
export interface IConfig {
brands: BrandsConfig;
master: string;
}
export class Config implements IConfig {
public readonly brands: BrandsConfig;
public readonly master: string;
public constructor(init: IConfig) {
Object.assign(this, init);
}
}
这个想法是 BrandsConfig 是一个键/值集合,其中值是此命名实例的设置。同时,“master”应该给这些实例中的一个(并且只有一个)一个特殊的状态。
有什么方法可以静态限制“master”的可能值(至少在 Config 类中,最好在接口中也是如此),以便它们不仅仅是任何字符串,而是位于BrandConfig 键?我知道我可以在运行时在构造函数中执行此检查,但我正在尝试将尽可能多的检查移至编译阶段,并为其提供适当的智能感知。
【问题讨论】:
标签: typescript