gpt4 book ai didi

typescript 映射类型

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:31 25 4
gpt4 key购买 nike

建议使用映射类型而不是显式部分类型,请参阅 https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types

即而不是

interface PersonPartial {
name?: string;
age?: number;
}

我们会用

interface Person {
name: string;
age: number;
}
type Partial<T> = {
[P in keyof T]?: T[P];
}
type PersonPartial = Partial<Person>;

是否可以映射到另一个方向,比如

type NotPartial<T> = {
[P in keyof T]!: T[P];
}
type Person = NotPartial<PersonPartial>;

因为我有一个创建部分接口(interface)的生成器,由于 duck typing 而破坏了我的类型检查。

最佳答案

您可以使用 -?删除 ? 的语法来自同态映射类型(但请继续阅读):

interface Person {
name?: string;
age?: number;
}
type Mandatory<T> = {
[P in keyof T]-?: T[P];
}
type PersonMandatory = Mandatory<Person>;

Example on the playground .这是描述here .

但是,你不必这样做,因为 TypeScript 已经有了它:Required<T> . Required<T> ...

...strips ? modifiers from all properties of T, thus making all properties required.

所以:

interface Person {
name?: string;
age?: number;
}
type RequiredPerson = Required<Person>;

Example on the playground .

关于 typescript 映射类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56965344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com