Ich struggeling ein bisschen mit dem Hinzufügen von Typen zu einem Knoten/Express-Projekt.Typescript 2.2 Express req, res implizit beliebig
Ich verwende Typoskript 2.2 und Express 4.x und ich habe Typen durch NPM installiert:
npm install --save-dev @types/express
import * as express from "express"
const app: express.Application = express()
app.get("/hello", (req, res) => {
res.send("world")
})
Das gibt mir:
src/app.ts(33,22): error TS7006: Parameter 'req' implicitly has an 'any' type.
src/app.ts(33,27): error TS7006: Parameter 'res' implicitly has an 'any' type.
Ich bin versuchen zu vermeiden, dies für alle Anforderungshandler tun zu müssen:
(req: express.Request, res: express.Response) => {}
Meiner Meinung nach sollte es in der Lage sein, diese zu schließen. Liege ich falsch? Ist das nicht möglich?
tsconfig.json:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"noImplicitAny": true,
"sourceMap": true,
"outDir": "dist",
"typeRoots": ["src/types", "node_modules/@types"]
},
"include": [
"src/**/*.ts"
]
}
Dank!
Sie konnten 'noImplicitAny' zu false ändern, oder ändern Sie jede Ihrer Routen. Du kannst es nicht auf beide Arten haben – Varedis
Ich stimme Varedis nicht zu und kann bestätigen, dass der Code, den du geschrieben hast, funktionieren sollte und '(req, res)' sollte automatisch getippt werden, da 'app.get' einen Typ hat. Wenn Sie vscode verwenden (oder einen anderen Editor, der Typoskript gut genug beherrscht), versuchen Sie "go to definition" auf "express.Application". Das einzige, was mir einfällt, ist, dass Sie die Typen nicht irgendwie von 'node_modules/@ types' bekommen. Versuchen Sie auch, Typoskript mit '--traceResolution'-Flag auszuführen und zu sehen, woher die Express-Typen tatsächlich kommen. –