Реален ли такой дженерик в TypeScript?
Вот так с указанием на аргументы:
function wrapper<T extends { start(...args: unknown[]): unknown }>(target: { new(): T }, ...args: Parameters<T['start']>): T {
  let instance = new target();
  instance.start(...args);
  return instance;
}


class RandomClass {
  start(arg1: string, arg2: number) { /* ... */ }
}
let instance = wrapper(RandomClass, 'Hello, world!', 777); /// все ок
let instance2 = wrapper(RandomClass, 777); /// ошибка
function wrapper<A extends any[], T extends { start(...args: A): void }>(target: { new(): T }, ...args: A): T {
  let instance = new target();
  instance.start(...args);
  return instance;
}


class RandomClass {
  start(arg1: string, arg2: number) { /* ... */ }
}
let instance = wrapper(RandomClass, 'Hello, world!', 777); /// все ок
let instance2 = wrapper(RandomClass, 777); /// ошибка

ошибка правда немного странная ругаться будет на RandomClass а не аргументы, возможно можно заставить ругаться на агрументы, не уверен.