从对象字面量类型中另一个函数的返回类型推断函数的参数类型

问题描述 投票:0回答:1

使用像这样的文字对象类型:

type A<R = any> = {
    f1: () => R
    f2: (x: R) => void
}

当我声明这样的值时,我希望将

x
fn2
参数推断为
string
(当然不指定
A<string>
):

const a: A = {
    f1: () => "",
    f2: (x) => {} // x: any, not string
}

有没有办法从

x
的返回类型推断
f1
的类型?

typescript type-inference
1个回答
0
投票

我不完全确定是否可以执行此类型检查。可能是,但我不知道如何实现。

由于无论如何您都可能会使用解决方法,因此您可以尝试以下更简单的方法:

const construct = <R>(f1: () => R, f2: (x: R) => void) => ({
  f1,
  f2,
});

const result = construct(
  () => 'string',
  (x) => {}
  // ^ x: string
);

游乐场

© www.soinside.com 2019 - 2024. All rights reserved.