小编Arj*_*jes的帖子

具有多个类型参数的泛型中的推断类型

我正在尝试设置一个泛型,其中参数是另一个对象的键。extends keyof当两种类型都是函数的参数时,我可以使用它来完成此操作。

但是,当提供键列表的类型不是参数而只是泛型类型时,打字稿需要设置两种泛型类型。

考虑以下代码:

interface Bar {
  z: string;
  t: number;
}

declare function foo1<T extends keyof Bar>(x: T)
let t1 = foo1('z');

declare function foo2<K, T extends keyof K>(x: T)
let t2 = foo2<Bar>('t');

declare function foo3<T>(x: T)
let t3 = foo3<keyof Bar>('t');
Run Code Online (Sandbox Code Playgroud)

游乐场链接

由于未指定foo2第二种类型,函数失败。T不过我觉得 TS 应该能够在没有明确的第二种类型的情况下推断出正确的类型。

foo3是我的解决方法,但使用起来不太好,是否可以让打字稿执行此推理,或者这将是向 TS 团队的功能请求/错误报告?

generics typescript typescript2.0

3
推荐指数
1
解决办法
8241
查看次数

标签 统计

generics ×1

typescript ×1

typescript2.0 ×1