编辑代码

function person<T>(value: T): T {
    return value
}

console.log(person('abc'))
console.log(person(555))
console.log(person([1, 2, 3]))

function reverse<T>(array: T[]): T[] {
    return array.reverse()
}
let arrayNumbers: number[] = [1, 2, 3, 4, 5]
console.log(reverse(arrayNumbers))

interface HasLength {
    length: number
}
function getLength<T extends HasLength>(obj: T): number {
    return obj.length
}
let str = 'hello'
console.log(getLength(str))

interface Article {
    title: string,
    author: string,
    date: string | Date | number
}
function createArticle<T, K extends keyof T>(obj: T, key: K): T[K] {
    return obj[key]
}
const article:Article = {
    title: 'TypeScript泛型',
    author: '汪汪',
    date: '2025-04-23'
}
console.log(createArticle(article, 'author'))