你不写 <T>,TS 会根据你传入的值“反推”出来:
function wrap<T>(value: T) {
return { value }
}
const a = wrap(123) // T 推导成 number
const b = wrap('hi') // T 推导成 string
再加约束:
function len<T extends { length: number }>(x: T) {
return x.length
}
len('abc') // OK,string 有 length