Система типов: реализовать условный тип для извлечения ключей объекта по типу значения

TypeScript Сложный types

Задача «Система типов: реализовать условный тип для извлечения ключей объекта по типу значения»

Напишите функцию extractKeysByValueType, которая принимает объект и тип значения (в виде строки, например 'string' или 'number'). Функция должна вернуть массив ключей, для которых значение имеет указанный тип. Используйте TypeScript generics и условные типы для корректного вывода типов. Если объект пуст или нет ключей с таким типом, вернуть пустой массив. Запрещено использовать any.

Формат ввода

Первая строка: JSON-строка с объектом. Вторая строка: строка с названием типа ('string', 'number', 'boolean').

Формат вывода

Строка, содержащая массив ключей в формате JSON (например, ["a","b"]). Если ключей нет, вывести [].

Примеры

Пример 1

ВВОД
{"a": 1, "b": "hello", "c": true} number
ВЫВОД
["a"]

Пример 2

ВВОД
{"x": "foo", "y": "bar"} string
ВЫВОД
["x","y"]

Пример 3

ВВОД
{"a": 1, "b": 2, "c": 3} boolean
ВЫВОД
[]
main.ts