Typescript:类型“FormDataEntryValue”上不存在属性“name”

au9on6nz  于 2023-05-08  发布在  TypeScript
关注(0)|答案(3)|浏览(357)

我有:
const file = formData.get('documents[]')
文件是什么类型?
const file: FormDataEntryValue | null
我需要访问file?.name
我得到了:
类型“FormDataEntryValue”上不存在属性“name”。

jjhzyzn0

jjhzyzn01#

FormDataEntryValue被定义为File和string的联合:type FormDataEntryValue = File | string;
因此,首先需要检查变量是否确实是File:

if (file instanceof File) {
  console.log(file.name);
}
c6ubokkw

c6ubokkw2#

类型“FormDataEntryValue”上不存在属性“name”。
正如错误所说,看起来像是在FormData.get()中传递的keyfile变量中的name属性不存在。
FormData接口的get()方法始终返回与FormData对象中给定键关联的第一个值。
因此,按照你的代码。看起来documents是一个对象数组。因此,您可以通过file[0]?.name而不是file?.name访问该名称

formData.append('documents', '[{name: "alpha"}]');

const file = formData.get('documents')

const fileName = file[0]?.name // returns alpha
k0pti3hp

k0pti3hp3#

FormData.get()返回类型为string | File | null的值。
如果您知道它将是一个文件,请用途:

const file = formData.get('documents[]') as File

下面是一个引用,https://dev.to/deciduously/formdata-in-typescript-24cl

相关问题