ts类型体操这个场景如何实现?

已知存在一个数据结构(属性个数不确定,可能有N个,属性的值只可能是基本数据类型)
{a: 1, b: 2, c: true, d: 'hello'}
通过函数转换属性的值是一个对象,该对象中包含2个属性,其中 default属性的值是上面数据类型的值,type属性的值是default属性值的构造函数

{
a: {default: 1, type: 1..constructor}, 
b: {default: 2, type: 2..constructor}, 
c: {default: true, type: true.constructor}, 
d: {default: 'hello', type: 'hello'.constructor}
}

请问这个ts函数如何实现?

阅读 1.3k
1 个回答

function convertProperties<T>(obj: T): Record<keyof T, { default: T[keyof T], type: new (...args: any) => T[keyof T] }> {
  const result: Record<keyof T, { default: T[keyof T], type: new (...args: any) => T[keyof T] }> = {} as any

  for (const key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      result[key] = {
        default: obj[key],
        type: (obj[key] as any).constructor,
      }
    }
  }

  return result
}

// 示例使用
const properties = {a: 1, b: 2, c: true, d: 'hello'}
const convertedProperties = convertProperties(properties)
console.log(convertedProperties)
推荐问题
logo
Microsoft
子站问答
访问
宣传栏