当前位置: 首页 > news >正文

网站排名优化价格私人网络服务器

网站排名优化价格,私人网络服务器,西安市招聘网最新招聘信息,视频网站建设费用明细在 TypeScript 中,keyof 和 in 是用于类型操作的两个关键工具,常用于处理对象类型的键和属性映射。以下是它们的详细解释和用法示例: 1. keyof 关键字 作用:将对象类型的键提取为联合类型。 语法:keyof T,…

在 TypeScript 中,keyofin 是用于类型操作的两个关键工具,常用于处理对象类型的键和属性映射。以下是它们的详细解释和用法示例:


1. keyof 关键字

作用:将对象类型的键提取为联合类型。
语法keyof T,其中 T 是对象类型。
结果:返回 T 的所有键的联合类型。

示例:
interface Person {name: string;age: number;
}type PersonKeys = keyof Person; // "name" | "age"
典型场景:
  • 泛型约束:限制函数参数必须为对象的有效键。
    function getValue<T, K extends keyof T>(obj: T, key: K): T[K] {return obj[key];
    }
    
  • 映射类型的基础:结合 in 使用,生成新类型(如 Partial<T>)。
特殊情况:
  • 空对象keyof {} 结果为 never
  • 原始类型keyof string 返回 String 包装对象的属性和方法的联合类型(如 "length" | "charAt" | ...)。

2. in 关键字

作用:在映射类型中遍历联合类型的每个成员。
语法[K in T],其中 T 是联合类型。
结果:为联合类型中的每个成员生成新的属性。

示例:
type Keys = "a" | "b";
type MyObject = {[K in Keys]: string;
};
// 等价于 { a: string; b: string; }
典型场景:
  • 工具类型的实现:如 Partial<T>Readonly<T>
    type Partial<T> = {[P in keyof T]?: T[P];
    };
    
  • 动态生成类型:根据联合类型创建新对象类型。

3. keyofin 的协作

两者常结合使用,keyof 提供键的联合类型,in 遍历这些键生成新属性。

示例:
interface Config {id: number;path: string;
}type ConfigGetters = {[K in keyof Config as `get${Capitalize<K>}`]: () => Config[K];
};
// 结果:
// {
//   getId: () => number;
//   getPath: () => string;
// }

4. 其他注意事项

  • 索引签名
    若对象有索引签名,keyof 会返回索引类型。
    interface StringMap {[key: string]: number;
    }
    type Keys = keyof StringMap; // string | number
    
  • 枚举类型
    使用 keyof typeof Enum 获取枚举的键。
    enum Direction { Up, Down }
    type DirectionKeys = keyof typeof Direction; // "Up" | "Down"
    
  • 类型保护
    in 在值空间用于检查属性存在(JavaScript 特性):
    if ("name" in obj) {// 类型收窄为包含 name 属性的类型
    }
    

总结

关键字作用场景示例结果
keyof提取对象键的联合类型keyof { a: 1, b: 2 }"a" | "b"
in遍历联合类型生成属性{ [K in "x"|"y"]: number }{ x: number; y: number }

掌握 keyofin 的使用,能显著提升 TypeScript 类型操作的灵活性和类型安全性。

http://www.dtcms.com/a/594472.html

相关文章:

  • 资源网站优化排名北京网络营销网站
  • 如何做简单的网站wordpress分页阅读
  • 做网站软件 wordpage贵阳哪里做网站
  • 优秀网站模板欣赏行业网站建设公司推荐
  • iTwin UI
  • 虚拟主机和网站的关系西安大型网站制作
  • 积极推进在线网站建设网站运营计划书
  • 远程网页调试工具实战:跨端前端调试的核心利器与最佳实践
  • (二)Docker实战--Docker镜像部署与启动
  • 【ZeroRange WebRTC】对称加密 vs 非对称加密(从原理到实践)
  • 网站建设逻辑长沙网络营销群
  • 你们交学费做网站局机关门户网站建设自查报告范文
  • 腾讯企点网页版山东网站排名优化公司
  • 网站地图有什么作用陕西seo顾问服务
  • openai 的 codex
  • 国内网如何看国外网站南阳河南网站建设价格
  • 电脑有连接网络,但浏览器网页无法打开
  • 专门做招商的网站东台网站建设
  • 网站便民服务平台怎么做wordpress优化cookie
  • 从BI深耕到AI洞察的渐进式增长实践
  • 建设银行网站转账计算机网站开发书籍
  • 茶叶公司网站源码jsp网站开发的使用表格
  • 重庆在建项目查询windows优化大师值得买吗
  • 做别人一样的网站模板网站开发的评论界面怎么写
  • 备案 网站名称 重复宾馆网站模板
  • 音乐网站怎么建设icp
  • 从局部性原理到一致性模型:深入剖析缓存设计的核心权衡
  • 自己动手写深度学习框架(数值法计算梯度)
  • Linux上的curl和telnet
  • 网络科技有限公司网站建设wordpress手机分享插件