/* eslint-disable @typescript-eslint/no-explicit-any */ type ObjectKeys = T extends Record ? (keyof T)[] : T extends number ? [] : T extends Array | string ? string[] : never; /** * Расширяем методы глобальных объектов */ // Собирает составной тип из ключей объекта, а не просто возвращает string interface ObjectConstructor { keys(o: T): ObjectKeys; } // Проверяет вхождение подтипа более мягко по сравнению с дефолтным поведением // eslint-disable-next-line @typescript-eslint/no-unused-vars interface Array { includes(searchElement: unknown, fromIndex?: number): boolean; } // Проверяет вхождение подтипа для `[...] as const` более мягко по сравнению с дефолтным поведением // eslint-disable-next-line @typescript-eslint/no-unused-vars interface ReadonlyArray { includes(searchElement: unknown, fromIndex?: number): boolean; }