Skip to content

Do not union any in Translation #1534

@Ghostbird

Description

@Ghostbird

According to the lines below, the any union is necessary.

export type Translation =
string |
Translation[] |
TranslationObject |
// required to prevent error "Type instantiation is excessively deep and possibly infinite."
// eslint-disable-next-line @typescript-eslint/no-explicit-any
any

However, this causes me issues, since the type of Translation is any because any overrides everything.
So I tried this in my local repo ("typescript": "^5.4.5") and I get no such recursion message.

// eslint-disable-next-line @typescript-eslint/consistent-indexed-object-style
interface TranslationObject {
  [key: string]: Translation;
}
type Translation = string | Translation[] | TranslationObject;

I can think of two possible causes (but there might be another reason):

  • When this code was written, that restriction was in place, but it was removed in a later Typescript version.
  • When this code was written, the restriction was detected, and circumvented by making TranslationObject an interface. However the | any was not removed by accident.

Can this | any be removed?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions