function foo<T>(arg: T): T {
return arg
}
let resNum = foo(999)
let resStr = foo('str')
let resObj = foo({
name: '张三',
age: 18
})
let resArrStr = foo(['str', 'str'])
let resArrObj = foo([
{
name: '李四',
age: 16
},
{
name: '王五',
age: 20
}
])
interface IObj{
name: string,
age: number
}
let resNum1 = foo<number>(777)
let resStr1 = foo<string>('str')
let resObj1 = foo<{
name: string,
age: number
}>({ name: '张三', age: 18 })
let resArrStr1 = foo<number[]>([1223, 22])
let resArrObj1 = foo<IObj[]>([
{
name: '李四',
age: 16
},
{
name: '王五',
age: 20
}
])