小编Jah*_*red的帖子

是否可以在 TypeScript 中传播独特的泛型类型?

是否可以将函数的参数分散到泛型类型数组中?

我正在尝试将 TypeScript 类型添加到接受函数并返回函数的通用函数。传递的函数的参数与返回的函数的参数相关。我希望消费者能够向传入的函数添加类型,并使这些类型出现在返回的函数上。

我已经找到了该问题的基本解决方案,但它仅适用于固定数量的参数。是否可以通过以下方式传播通用参数?

用法示例:

type Foo = // Generic solution here

const bar = foo((state, name: string, age: number));

bar('John', 22); // All good
bar('John', 'Doe'); // Type Error, 'Doe' is not a number

const baz = foo((state, firstName: string, lastName: string, age: number));

baz('John', 'Doe', 22)
Run Code Online (Sandbox Code Playgroud)

这是用于 React Hook 集成。有一些非常好的例子,提供商在让 TypeScript 类型安全对于消费者来说非常容易方面做得非常出色。TypedUseSelectorHookReact Redux 就是一个很好的例子。https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react-redux/index.d.ts#L556

尝试 1 一种带有扩散的解决方案。但不幸的是,所有类型都是所有可能类型的联合。

export type foo<State> = <Args>(
    baz: (state: State, ...args: Args[]) => Partial<State>
) => (...args: Args[]) => …
Run Code Online (Sandbox Code Playgroud)

typescript

4
推荐指数
1
解决办法
9882
查看次数

标签 统计

typescript ×1