Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

hermione.ctx нельзя типизировать #883

Closed
1 task done
hheimerd opened this issue Mar 25, 2024 · 4 comments · Fixed by #888
Closed
1 task done

hermione.ctx нельзя типизировать #883

hheimerd opened this issue Mar 25, 2024 · 4 comments · Fixed by #888
Assignees

Comments

@hheimerd
Copy link

hheimerd commented Mar 25, 2024

Verify latest release

  • I verified that the issue exists in the latest Hermione release

Hermione version

8.5.0

Last Hermione version that worked

7.x.x

Which area(s) of Hermione are affected? (leave empty if unsure)

No response

Link to the code that reproduces this issue or a replay of the bug

No response

Reproduction steps

interface HermioneExtendedContext {
    ctx: {
        someExtendedFn(): void;
    }
}

declare global {
    // Не является глобальным типом, даже если бы являлся, то нельзя переопределить поле
    interface GlobalHelper {
        ctx: HermioneExtendedContext;
    }

    // Глобальные константы нельзя переопределить
    const hermione: {
        ctx: HermioneExtendedContext;
    }
}

hermione.ctx.someExtendedFn (unknown)

Actual Behavior

hermione.ctx нельзя типизировать, все поля явно указаны как unknown. Глобальный объект hermione нельзя расширить

Expected Behavior

Должен быть способ переопределения типа hermione.ctx и расширения интерфейса GlobalHelper.

Раньше в типах ctx был Record<string, any>, и это не мешало, теперь ctx: Record<string, unknown>, и TS ругается на использование полей ctx без каста. Вставлять везде typeguard - не вариант, слишком много бесполезного кода.
К тому же раньше Hermione.GlobalHelper был глобальным типом и можно было сделать поле extendedCtx, а сейчас это просто экспортированный тип, и его нельзя расширить.

Which Node.js version are you using?

20.10.0

@hheimerd
Copy link
Author

Предлагаю сделать откат до варианта с неймспейсом. Или назвать интерфейс HermioneGlobalHelper, если нет желания связываться с неймспейсами.
плейграунд

@KuznetsovRoman
Copy link
Member

KuznetsovRoman commented Mar 27, 2024

@hheimerd, #888 удовлетворит ваши запросы?

@hheimerd
Copy link
Author

Да, идеально

@KuznetsovRoman
Copy link
Member

@hheimerd Released as 8.7.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants