Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Porque não funciona e qual seria a melhor saída para contornar?

Olá, estou com uma situação na qual não consigo resolver, o seguinte código em typescript, funciona normalmente no nodejs mas no typescript não :( .

Como posso contornar a situação e gerar as rotas dinamicamente?

router[route.method](route.path, route.handler, route.middleware)

segue link do playground de exemplo: https://www.typescriptlang.org/play/?alwaysStrict=false&target=3&ssl=33&ssc=2&pln=1&pc=1#code/JYWwDg9gTgLgBAUQB5igUwM4YDRwN5wBKEArjGlLoZpAHYZpwC+cAZlBCHAORorpZuAbgBQI4LXJRWAQwDGjYmUZ4RcdXDAyYACwBccDDCgSA5qI1wQaXRAAmBoydrm1GnTNp2ANhQMAxElo5GGAIWgsNEGA7HzQAdxl0AKCQsNo4AB84ILs0Vgk0O1EmMTlwozhvCFM4AF44AAoBA2oMOgYASnqAPjhy+ghfADpq02bMTtERAcqOZQxW0nIAbQBdergVt3VVS0stXQMAIgB6HU40Y+wd-etbBzhj0xtr28sPL18oAwnFohoFTQ3TqfQEwwYXka3AA8gBpbidG77KIxOKJZJVGq3JjIjR7FGabT6J6nchGK54lH3C6PZ6vKn7T5xH5NFoA9pAkFgzAQtBQ7gAFUwMBkdggiMZlmisV8GLQBjGOJEazKFXg8ykS2UUE2yFQmAwwyUUkaUzEmt5IBkYGay0YoNuduUwxl6KSwNuAH44JaoCtLa6bLS1s7yMNDjpcIHmd9o-bXWi5R7OrcDH6AwmafZQ4HI-GXbGKKnOkA

1 resposta
solução!

Fala ai Renan, tudo bem? Esse erro parece ser porque o Route do Express meio que não aceita receber uma string para chamar uma função.

É bem comum esse erro no TypeScript, tente fazer um cast para any do router:

routes.map(route =>
    (route.middleware)
        ? (router as any)[route.method](route.path, route.handler, route.middleware)
        : (router as any)[route.method](route.path, route.handler)
)

Acho que deve resolver.

Espero ter ajudado.