alekciy
@alekciy
Вёбных дел мастер

Как заставить IDE понимать создержимое DI контейнера?

Я использую библиотеку Awilix для создания DI контейнера. Содержимое файла DI.ts такое:
import * as _ from 'lodash';
import {ModuleDescriptor} from "awilix";

const awilix = require('awilix');
const container = awilix.createContainer();

// Загружаем в контейнер сервисы (службы) реализующие бизнес логику
container.loadModules([
    [
        __dirname + '/../services/*.ts',
        {
            register: awilix.asClass,
            lifetime: awilix.Lifetime.SINGLETON,
        }
    ]
], {
    formatName: (name:string, descriptor:ModuleDescriptor) => {
        return _.lowerFirst(name) + 'Service';
    },
    resolverOptions: {
        lifetime: awilix.Lifetime.SINGLETON,
        register: awilix.asClass,
    }
});

export default container.cradle;


Использую так:
import Statement from "../services/Statement";
import DI from "../System/DI";
/** @type Statement */
let service = DI.statementService;

и работает это нормально, но крайне неудобно, что IDE (у меня это PHPStorm) не понимает, что внутри DI есть свойство statementService и это объект Statement. Пытаюсь это делать через JSDocs, но не срабатывает. Можно ли ему это как-то подсказать?

UPD: Понял, что type для let срабатывает, если делать export default container.cradle в DI.ts. Но хочется больше. Хочется в DI.ts это прописать и что бы IDE это поняла.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект