Как я могу заставить environment.service принимать только те значения, которые реализуют ServiceInterface?
interface ServiceInterface {
id: string
}
class ServiceA implements ServiceInterface {
id = 'a'
}
class ServiceB implements ServiceInterface {
id = 'b'
}
interface Environment {
service: ServiceInterface
}
const environment: Environment = {
service: ServiceA // TS2741: Property 'id' is missing in type 'typeof ServiceA'...
}
Я хочу, чтобы люди могли переключать службу в среде для собственной реализации службы, но только до тех пор, пока их новая реализация придерживается ServiceInterface.
Причина, по которой я не могу использовать экземпляр service: new ServiceA()
, заключается в том, что я использую Angular, где внедрение зависимостей заботится о создании экземпляра класса. Я должен предоставить класс для системы внедрения зависимостей. Для этого я импортирую файл среды, в котором мне нужно убедиться, что добавленный там класс реализует интерфейс.