фига себе! не знал что выражение справа от extends может зависеть от T...
если нужно ещё проверять, что T - объект, то Check будет таким
class Test<T extends [T] extends [object]
? Record<[keyof T] extends [never] ? 'Expected at least one property' : keyof T, unknown>
: never> {
class Test<T extends {
[Key in ([keyof T] extends [never] ? 'Expected at least one property' : keyof T)]: unknown
}> {