编写一个类型安全的函数,它接收一个对象和一个字符串,并返回一个以该字符串为键的新对象。
创始人
2024-12-07 02:00:04
0

我们可以使用 TypeScript 来编写这个函数,代码示例如下:

interface SomeObject {
  [key: string]: unknown;
}

function createNewObjectWithKey(obj: T, key: K): {[key in K]: T[K]} {
  return {[key]: obj[key]} as {[key in K]: T[K]};
}

这个函数接收两个参数,一个是任意类型的对象,一个是对象的某个属性名称。返回值是一个新对象,它只有一个属性,即传入的属性名称,并且这个属性的值是原对象中对应属性的值。

我们使用泛型来确保这个函数是类型安全的。泛型 T 表示传入的对象的类型,而泛型 K 表示对象属性的名称。我们使用 TypeScript 的 keyof 关键字来限定 K 必须是 T 的某个属性名称。

对于返回值类型,我们使用 as 关键字来强制转换类型,这是因为 TypeScript 无法推断出返回值类型的确切结构。使用 {[key in K]: T[K]} 的语法,我们可以定义一个对象类型,它只有一个属性,属性名称为 K,属性值的类型为 T[K],这样就能确保返回值的类型是符合预期的。

这个函数的使用示例如下:

const obj = {
  name: 'Alice',
  age: 30,
  address: {
    city: 'New York',
    country: 'USA'
  }
};

const newObj = createNewObjectWithKey(obj, 'name');
// newObj 的类型为 {name: string}
// newObj 的值为 {name: 'Alice'}

const newAddress = createNewObjectWithKey(obj.address, 'city');
// newAddress 的类型为 {city: unknown}
// newAddress 的值为 {city: 'New York

相关内容

热门资讯

总结教程!wepoke透明挂(... 总结教程!wepoke透明挂(wepok软件透明挂)wepoker(就是真的有挂);wepoker黑...
微扑克游戏辅助器!微扑克有挂,... 您好,微扑克这款游戏可以开挂的,确实是有挂的,需要了解加微【757446909】很多玩家在这款游戏中...
九分钟了解!福建麻将有挂吗,心... 九分钟了解!福建麻将有挂吗,心悦麻将挂踢坑,存在挂教程(有挂解密);1、点击下载安装,心悦麻将挂踢坑...
发现一款!jj斗地主助赢神器(... 发现一款!jj斗地主助赢神器(辅助)一贯存在有挂(2021已更新)(哔哩哔哩)1、不需要AI权限,帮...
1分钟了解!安徽闲来麻将有挂吗... 1分钟了解!安徽闲来麻将有挂吗,边锋斗地主底牌怎么看,详细教程(有挂教程)1、构建自己的边锋斗地主底...
微扑克ai辅助!微扑克使用方法... 微扑克ai辅助!微扑克使用方法(透视辅助)都是有挂是一款可以让一直输的玩家,快速成为一个“必胜”的a...
WePoKe透视挂!wepok... 1、WePoKe透视挂!wepokewopoker透明挂(透视)we poker(原来真的有挂);详...
查到实测辅助!随意玩软件黑科技... 查到实测辅助!随意玩软件黑科技(透明挂)一贯真的有挂(2026已更新)(哔哩哔哩)亲,关键说明,随意...
三分钟了解!雀神开外挂专用辅助... 三分钟了解!雀神开外挂专用辅助器下载安装,妙趣斗地主有挂吗,黑科技教程(有挂方法)1、每一步都需要思...
微扑克辅助软件!微扑克ai机器... 微扑克辅助软件!微扑克ai机器人打德州,微扑克ai辅助器苹果版(果然是有挂)1、许多玩家不知道微扑克...