我试图根据给定的参数推断返回类型
香港专业教育学院尝试使用泛型。
type Getter<T> = T extends string ? string : object
function get<T> (key?: T ): Getter<T|undefined> {
if (key) {
return 'string'
} else {
return {}
}
}
let single = get('htewr')
let multi = get()
multi
总是推断它必须是对象类型。但是,single
仍然可以推断出它是string | object
类型而不是字符串类型。
您正在遇到条件类型的分布行为。Getter<T | undefined> = Getter<T> | Getter<undefined> = Getter<T> | object
因此,无论T
您将object
在重新开始的工会中获得成功。
这按预期工作:
type Getter<T> = T extends string ? string : object
function get<T> (key?: T): Getter<T> {
if (key) {
return 'string' as Getter<T>
} else {
return {} as Getter<T>
}
}
let single = get('htewr') // string
let multi = get() // object
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句