Я пытаюсь реализовать загрузку файла с помощью TypeScript, express -fileupload и body-parser . (Я также успешно установил соответствующие @types).
Я борюсь с преобразованием примера JavaScript в TypeScript, но я думаю, что моя проблема более общая. Я хочу использовать (см. Код) form.mv()
и form.name
, но компилятор продолжает жаловаться на то, что этих членов не существует. Глядя на тип моей переменной form
, это тип объединения UploadedFile | UploadedFile[]
, поэтому я думаю, что мне нужно переключаться в зависимости от фактического случая типа во время выполнения. Но компилятор не позволяет мне сопоставить с образцом те случаи, которые он фактически вывел (см. Снимок экрана). Как правильно работать с этим типом?
Снимок экрана:
Complete code:
import {Express, Request, Response} from 'express';
import fileUpload = require('express-fileupload');
import bodyParser = require('body-parser');
export class Server {
private app: Express;
constructor(app: Express) {
this.app = app;
this.app.use(fileUpload({createParentPath: true}));
this.app.use(bodyParser.json());
this.app.use(bodyParser.urlencoded({extended: true}));
this.app.post('/form', (req: Request, res: Response) => {
try {
if (!req.files) {
res.send({
status: false,
message: 'No form uploaded'
});
} else {
// use the name of the upload field to retrieve the uploaded form
let form = req.files.form;
// use the mv() method to place the file in the forms directory
switch (form) {
case fileUpload.UploadedFile: true;
case fileUpload.UploadedFile[]: false
}
form.mv('./forms/' + form.name);
}
}
});
}
public start(port: number): void {
this.app.listen(port, () => console.log(`Server listening on port ${port}!`));
}
}