背景
我正在制作一个简单的网站,用户可以上传图像。 我使用的是Node/React/Multer/Typescript技术。
问题
app.post('/admin/uploads', async (req, res) => {
uploadHandler(req, res, (err) => {
...
if ( req.files.companyImage !== undefined ) {
...
}
res.sendStatus(201);
});
});
TypeScript的智能感知会显示以下形式的错误。
Property 'companyImage' does not exist on type '{ [fieldname: string]: File[]; } | File[]'.
Property 'companyImage' does not exist on type '{ [fieldname: string]: File[]; }'.ts(2339)
但是,我不明白为什么会出现这个错误。我认为
files
对象的类型应该是{ [fieldname: string]: File[]; }
,意味着files
对象可以有一个字符串属性。所以我用一个简单的例子进行测试。
type myType = {
[fieldName: string]: number
}
let req: myType = {
a: 333,
b: 344
}
console.log(req.a);
console.log(req.c); // undefined but intellisense don't show error
我不知道为什么
files
对象不能有companyImage
属性。请检查一下。
npm install --save-dev @types/multer
命令以安装multer
类型声明。 - Mickael V.const files = req.files; if(Array.isArray(files)) { throw new Error(); } else { console.log(files.companyImage) }
- Brian Hannay