Есть функция в которую я передаю класс:
function wrapper<T extends { start(...args: any[]): void }>(target: { new(...args: any[]): T }, ...args: any[]): T {
let instance = new target();
instance.start(...args);
return instance;
}
Соответственно можно сделать так:
class RandomClass {
start(arg1: string, arg2: number) { /* ... */ }
}
let instance = wrapper(RandomClass, 'Hello, world!', 777);
Но поскольку у меня прописано
target: { new(...args: any[]): T }, ...args: any[]
, то редактор кода (например Visual Code) не понимает какие аргументы должны идти далее и мне как программисту надо самому думать какие параметры я должен передать. Можно ли как-то переписать дженерик, так чтобы после того как я прописываю первый аргумент target, то последующие аргументы брались из target.prototype.init?
То есть если вернуться к примеру выше, чтобы после ввода
wrapper(RandomClass,
редактор кода сообщил мне, что я должен ввести еще
arg1: string, arg2: number
.
Это вообще возможно? Или TypeScript еще не настолько гибок?