如何扩展返回类型?

时间:2017-10-07 14:20:49

标签: typescript typescript2.0

这是我想要完成的伪语法。

type Potatoizer<T> = (input:T) => (T extends {potato: number})

1 个答案:

答案 0 :(得分:1)

如果您发现自己想扩展某个类型而无法使用extends,请考虑使用intersection types。在您的情况下,您有一个通用的T,因此您无法执行interface WithPotato extends T,也无法执行T extends {potato: number},因为传入的类型T实际上并未延伸那。你能做的是:

type Potatoizer<T> = (input:T) => T & {potato: int}

(什么是int?你的意思是number?)

然后Potatoizer<T>是一个函数的类型,它接受某种类型的参数并返回相同类型的值,并在potato类型上添加int属性(或者你的意思)。

希望有所帮助;祝你好运!