sách gpt4 ăn đã đi

typescript - 如何合并 Foo | Foo 到 Foo

In lại 作者:搜寻专家 更新时间:2023-10-30 20:57:09 28 4
mua khóa gpt4 giày nike

我遇到了以下变量的情况:

var foo: Foo | Foo | Foo;

动态生成(使用 keyof 和 stuff),这在代码的那个点是完全有意的。但是,我需要调用像这样定义的对象内部的方法:

class Foo {
pipe(): Foo;
pipe(obj: Operator, obj2: Operator): Foo;
pipe(obj: Operator): Foo;
pipe(...obj: Operator[]): Foo {
return new Foo();
}
}

问题是,当我执行以下操作时:

const f = foo.pipe((bar) => new Foo());

thanh被推断为 sợi dây虽然我期待 string | number | boolean .

我的猜测是我需要转换 Foo | Foo | FooĐi vàoFoo它解决了问题。

我怎样才能做这样的转换?

câu trả lời hay nhất

您可以使用条件类型来实现此目的(联合类型分布在联合上,这在这种情况下对我们有帮助)

type UnionOfFooToFooOfUnion > = Foo< T extends Foo ? U : never>

let foo!: Foo | Foo | Foo;

let merged: UnionOfFooToFooOfUnion = foo // we can just assign it

或者我们可以使用一个函数:

function mergeFoo>(foo: T): UnionOfFooToFooOfUnion {
return foo;
}
mergeFoo(foo).pipe(s=> console.log(s)) // s is number | string | boolean

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress