这是我想要完成的伪语法。
type Potatoizer<T> = (input:T) => (T extends {potato: number})
答案 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
属性(或者你的意思)。
希望有所帮助;祝你好运!