TypeScript Partial类型如何工作

PartialTypeScript 中的类型是与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"
}

这段代码会抛出一个错误,因为它期望firstUsertypeUser应该有一个名为 的属性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 内容