网站搜索

Typescript - 在具有多个泛型参数的泛型类型上使用“infer”关键字未按预期工作


假设我有以下类型:

type Foo<A, B> = A & B;

当我这样做时:

type Bar<T> = T extends Foo<infer _, infer K> ? K : never;

我预计这会有效:

const someVariable: Bar<Foo<string, number>> = 200;

但是我收到以下错误:“类型 'number' 不能分配给类型 'never'。”

答案#1

type Foo<A, B> = A & B;

在传递像 string 和 number 这样的原始类型时要小心,因为

type Foo<A, B> = A & B;
type R = Foo<string, boolean>;
R is never

你可能应该改为 type Foo<A, B>=A | B;,这应该能解决你的问题。