У меня есть этот код:
class Route {
constructor(
public method: 'get' | 'post' | 'update' | 'delete',
public path: string,
public handler: () => string,
) {}
}
class Router {
constructor(private routes: (Route | Parameters<typeof Route.constructor>)[] = []) {}
}
Я пытаюсь добиться, чтобы Router
принял массив объекта Route
или просто массив аргументов для построения Route
s, например:
const router = new Router([
new Route('get', '/', () => 'Hello, world!'),
// or
['get', '/', () => 'Hello, world!'],
]);
Я знаю, Parameters
может использоваться для получения параметров функции в виде кортежа, и это нормально работает для всех функций и методов, но когда я пытаюсь использовать его с любыми конструкторами, компилятор выдает эту ошибку:
Type 'Function' does not satisfy the constraint '(...args: any) => any'.
Я гуглил, но не смог найти ни одного предыдущего вопроса, который бы соответствовал моему делу.
Итак, есть ли способ достичь этого?