【发布时间】:2020-08-30 17:42:20
【问题描述】:
我在尝试实现泛型类型时遇到了一个特殊问题。假设我想声明一个函数的类型,该函数在其参数中返回给定对象的键:
type Dimension = { x: number, y: number };
type MyFunctionGeneric1 = <T>(payload: T) => T[keyof T];
const getX1: MyFunctionGeneric1 = (payload: Dimension) => payload.x; // Doesn't work
type MyFunctionGeneric2<T> = (payload: T) => T[keyof T];
const getX2: MyFunctionGeneric2<Dimension> = (payload) => payload.x; // OK
我的问题是,如果我明确提供有效负载的类型,那么它就可以工作。但是,一旦我尝试让泛型类型隐式推断有效负载类型,它就会抱怨:
Type '(payload: Dimension) => number' is not assignable to type 'MyFunctionGeneric1'.
Types of parameters 'payload' and 'payload' are incompatible.
Type 'T' is not assignable to type 'Dimension'
【问题讨论】:
标签: typescript typescript-generics