Тип токена Angular DI Injection не соответствует типу возвращаемого значения фабрики, но служба принимает
Почему можно предоставить токен инъекции определенного типа, но можно передать фактическое значение другого типа, и это будет принято в службе, внедренной с токеном?
import { InjectionToken } from '@angular/core';
export const CONFIG = new InjectionToken<string>("SomeToken");
export interface Config {
environment: 'someEnv' | 'someEnvTwo';
}
export function configurationFactory(): any {
const configuration = {
environment: 'someEnv';
}
return configuration;
}
@NgModule({
imports: [...],
exports: [...],
providers: [
{
provide: CONFIG,
useFactory: configurationFactory
}
]
})
export class SomeModule { }
@Injectable({
providedIn: 'root',
})
export class ConfigurationService {
constructor(@Inject(CONFIG) private config: Config) {
const environment = config.environment;
}
}
В этом случае ConfigurationService внедряется с токеном, который имеет тип, но определяет тип как . В модуле указывается предоставление
CONFIG
token и используя значение типа as, но соответствующее интерфейсу.
Не возникнет ли у ConfigurationService конфликта с токеном, указанным как type , не соответствующим
Config
введите параметр конструкции?
Не будет ли модуль предоставлен
CONFIG_TOKEN
конфликт с фабрикой, возвращающей
any
объект, а не
string
?
Ссылка на документацию Angular DI подсказывает мне, что это невозможно, однако это работает.