gpt4 book ai didi

javascript - 尝试至少存在一个必需的可选参数,但它的存在排除了其他参数

转载 作者:行者123 更新时间:2023-12-01 01:03:49 24 4
gpt4 key购买 nike

让我深入了解一个示例:

type NodeOrMethod<T> =
| {
node?: Array<Filter<T>>;
method: Condition<T>;
}
| {
node: Array<Filter<T>>;
method?: Condition<T>;
};

interface BaseFilter {
label: string;
value?: string;
}

export type Filter<T> = BaseFilter & NodeOrMethod<T>;

基本上我想做的是让开发人员必须包含 nodemethod - 目前这是有效的;然而,我想更进一步说,如果其中一个存在,则另一个不能存在。因此,如果他们尝试在同一个对象中包含 nodemethod ,它会提示。以前有人做过类似的事情吗?

最佳答案

我可能会使用标记的联合(请参阅 docs 的相关部分)来完成您想要做的事情,例如

type Node<T> = {
type: 'node',
node: Array<Filter<T>>;
}
type Method<T> = {
type: 'method',
method: Condition<T>;
}
type NodeOrMethod<T> = Node<T> | Method<T>;

cost a: NodeOrMethod<T> = { // valid
type: 'node',
node: [...]
}

cost b: NodeOrMethod<T> = { // valid
type: 'method',
method: ...
}

cost c: NodeOrMethod<T> = { // type error
type: 'method',
node: [...],
method: ...
}

Example

关于javascript - 尝试至少存在一个必需的可选参数,但它的存在排除了其他参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55814398/

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