axios Typescript -对非必需值的类型Assert

1mrurvl1  于 2022-11-23  发布在  iOS
关注(0)|答案(1)|浏览(206)

这更多的是为了验证处理事情的正确方式。
我使用带有Typescript的Vue前端,通过axios将数据发布到API。
我有React对象,如:

const payload = reactive({
  name: '',
  religion: undefined as string | undefined
  gender: undefined as string | undefined
})

然而,一个相当简单的例子是,宗教和性别字段不需要在有效负载中,除非在发布到API时设置,它们默认设置为undefined,然后在发布时被过滤掉。
这是处理此类情况的正确方法吗?
我是不是该换个更好的方式来处理这件事?

vsdwdz23

vsdwdz231#

通常最好先编写一个类型来模拟数据,可以使用foo?: SomeType语法将属性声明为可选。

interface MyCoolThing {
    name: string,
    religion?: string
    gender?: string
}

现在您可以使用整个类型来强制执行:

const payload = reactive({
  name: '',
  religion: undefined,
  gender: undefined,
} as MyCoolThing)

reactive是一个泛型函数,其中的泛型类型参数是它的第一个参数的类型,所以你可以直接显式传递该类型:

const payload = reactive<MyCoolThing>({
  name: '',
  religion: undefined,
  gender: undefined,
})

见操场

相关问题