typescript 对象类型声明中 ,一个key 存在,另一个key 则可必须存在,
时间: 2023-05-11 14:07:16 浏览: 150
可以使用 TypeScript 中的交叉类型来实现这个需求,例如:
```
type RequiredKeys<T, K extends keyof T> = {
[P in K]-?: T[P];
};
type MyObject = {
foo: string;
bar?: number;
};
type MyRequiredObject = RequiredKeys<MyObject, 'foo'> & RequiredKeys<MyObject, 'bar'>;
```
这样定义的 `MyRequiredObject` 类型中,`foo` 和 `bar` 都是必须存在的属性。
相关问题
typescript 对象类型声明中 , 一个key 存在,另一个key 也必须存在,
可以使用交叉类型来实现这个需求,例如:
```
type MyObject = {
key1: string;
key2: string;
} & {
key1: string;
key3: string;
};
```
这样定义的 `MyObject` 类型中,如果存在 `key1`,那么 `key2` 和 `key3` 都必须存在。
typescript 对象类型声明中 ,2个key , 必须同时存在或 必须同时不存在
typescript 对象类型声明中,2个 key 必须同时存在或同时不存在,可以使用交叉类型和联合类型来实现。例如,使用交叉类型可以声明一个对象类型,其中两个 key 必须同时存在:
```
type MyObject = {
key1: string;
} & {
key2: number;
};
```
使用联合类型可以声明一个对象类型,其中两个 key 必须同时不存在:
```
type MyObject = {
key1: string;
} | {
key2: number;
} | {
key1?: never;
key2?: never;
};
```
在第三个对象类型中,key1 和 key2 都是可选的,但是它们的类型被设置为 never,这意味着它们不能同时存在。
阅读全文