Как убедить тайпскрипт, что unknown можно в ReturnType?

Да, действительно, TypeScript по умолчанию не позволяет использовать тип unknown в качестве ReturnType. Обычно, если вы пытаетесь использовать unknown в качестве типа возвращаемого значения, вам будет выдана ошибка компиляции.

Однако, с помощью некоторых хитростей и подходов, вы можете указать TypeScript на то, что unknown может быть преобразовано в соответствующий тип возвращаемого значения.

Один из способов достичь этого - использовать условный тип в сочетании с typeof оператором. Например, допустим у нас есть функция getReturnValue, которая может возвращать либо unknown, либо определенный тип:

function getReturnValue(): unknown {
  // Ваша реализация функции
}

Чтобы убедить TypeScript, что unknown может быть преобразовано в тип возвращаемого значения, мы можем использовать условный тип:

function getReturnValue(): ReturnType<typeof getReturnValue> {
  // Ваша реализация функции
}

В данном случае ReturnType<typeof getReturnValue> указывает TypeScript на то, что возвращаемое значение функции getReturnValue должно быть типом, который возвращает сама функция getReturnValue. Это позволяет TypeScript корректно определить тип возвращаемого значения.

Используя этот прием, вы можете убедить TypeScript в том, что unknown может быть преобразовано в соответствующий тип возвращаемого значения в вашем проекте.