@Geraldo,
infelizmente javascript não é uma linguagem tipada, mas se fosse, a declaração da função "routes" seria algo mais ou menos assim:
import { Application, Request, Response } from 'express';
const routes = (app: Application): void => {
app.route('/').get((req: Request, res: Response) => { res.send('Curso de Node.js'); });
// status(200) é desnecessário, pois é o status padrão quando não declarado
};
(acabei utilizando typescript para o exemplo ficar mais perto de um possível mundo real)
de cara fica mais claro, não? bem... eu acho que fica.
a questão é: observe que "tipando" fica claro que o 'app' não é um simples parâmetro: é um parâmetro que espera um objeto do tipo Application - e é o que vc acaba passando ao invocar routes(app) no app.js, pois em app.js foi declarado const app = express() (vc criou e atribuiu uma instancia de Application à variável app)
é por isso que o "parâmetro" app (que é do tipo Application) tem um método route() que, por sua vez, retorna um objeto Router que tem o método get()
quer dizer, o parâmetro em si não tem algo, mas, quando a função routes(app) é invocada, aí o valor que o parâmetro recebe é um objeto do tipo Application com propriedades e métodos.
já viu o básico de javascript? talvez uma revisada te ajude...
obs: não tente utilizar o as declarações typescript no teu projeto javascript
obs: é possível também se valer de "type annotations" (JSDoc) diretamente nos arquivos .js, mas fui de typescript no exemplo porque é bem mais simples de entender mesmo sem ter conhecimento algum de typescript.