WbICHA, Владимир, только тип object в TypeScript - это любой не примитивный тип:
class Example {}
let wrong: object;
wrong = function() {}; // ок
wrong = new Map(); // ок
wrong = new Example(); // ок
wrong = {}; // ок
let right: Record<PropertyKey, unknown>;
right = function() {}; // ошибка
right = new Map(); // ошибка
right = new Example(); // ошибка
right = {}; // ок
Мне кажется в данном случае будет лучше T extends Record<PropertyKey, unknown>
Дмитрий Беляев, всё так, но запись через рекорд куда как длиннее, а это ограничение... Я ещё ни разу не встречал ситуацию, когда оно имело бы реальный смысл.
Честно говоря, в данном случае я бы вообще убрал экстендс, потому что он бессмысленен.