Partial
TypeScript 中的类型是与Required
. 它将类型中的所有属性设置为可选。
让我们看看它是如何工作的。如果您对相反的问题感兴趣,请尝试我关于Required 类型如何在 TypeScript中工作的文章。
TypeScript 中的部分类型#
?
在 TypeScript 中,我们可以使用问号将类型定义为可选。例如,在下面的代码中,lastName
是可选的。因此,即使firstUser
有 type User
,我们也可以省略lastName
,因为它不是必需的。
type User = {
firstName: string,
lastName?: string
}
let firstUser:User = {
firstName: "John"
}
有时,我们继承或使用的类型没有可选类型,但我们知道在某些情况下可能会丢失某些属性。看看下面的例子。在这里,lastName
不再是可选的,但firstUser
仍然没有:
type User = {
firstName: string,
lastName: string
}
let firstUser:User = {
firstName: "John"
}
这段代码会抛出一个错误,因为它期望firstUser
typeUser
应该有一个名为 的属性lastName
:
Property 'lastName' is missing in type '{ firstName: string; }' but required in type 'User'.
如果我们想避免该错误,我们必须将firstUser
‘s type 更改为Partial<User>
. 这将告诉 TypeScript 将类型中的每个属性设置User
为可选:
type User = {
firstName: string,
lastName: string
}
let firstUser:Partial<User> = {
firstName: "John"
}
这最终与将User
类型重新定义为:
type User = {
firstName?: string,
lastName?: string
}
唯一的区别是,我们现在可以同时使用两者——如果我们希望类型有一些缺失的属性,我们可以使用Partial
. 如果我们不这样做,我们可以只使用普通User
类型:
type User = {
firstName: string,
lastName: string
}
let firstUser:Partial<User> = {
firstName: "John"
}
let secondUser:User = {
firstName: "John",
lastName: "Doe"
}
与 TypeScript 中的许多其他实用程序类型一样,Partial
它旨在使用定义为对象的接口或自定义类型,如我们User
上面的类型。所以它不适用于变量之类的东西。
如果您喜欢这个快速指南,请在此处查看更多TypeScript 内容。