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

可做实名认证的网站网站快速排名服务

可做实名认证的网站,网站快速排名服务,招聘网站做鸭子的,wordpress整套主题在 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/wzjs/202855.html

相关文章:

  • 做淘宝网站需要多大空间企业网页设计与推广
  • 北安网站设计站长工具高清
  • 做广告的公司搜索引擎优化的缺点包括
  • 网站建设商品的分类seo网站推广下载
  • 网络科技网站有哪些方面北京关键词排名推广
  • 做百度个人网站地推项目对接平台
  • 南昌商城网站设计零基础学什么技术好
  • dw cs4怎么做网站广告推广营销网站
  • 网站开发合同售后服务培训机构专业
  • 菏泽市住房和城乡建设局网站免费网络推广100种方法
  • 上海专业高端网站建设服务seo站点是什么意思
  • 深圳做网站报价成都百度推广电话号码是多少
  • 网站建设方案多少钱线上营销手段有哪些
  • 昆明网站建设天锐科技百度关键词搜索指数查询
  • 宝鸡响应式网站建设网络营销的现状及问题
  • 网站后台关键词链接怎样做seo的工具有哪些
  • 个人网站做淘宝客容易封吗推广方案模板
  • 网站设计毕业论文ppt网络推广与优化
  • 广州 网站的设计公司百度app打开
  • 建设网站呼叫中心有什么好处爱站seo工具包官网
  • 网站怎么做图片链接一键清理加速
  • 做网站需要交印花税百度指数第一
  • 手机网站制作器百度账号快速登录
  • 洋洋点建站电脑培训班零基础
  • 建设网站的服务费是指什么市场营销公司有哪些
  • 做网站要什么资料做网站推广公司
  • 合肥做英文网站杭州网站建设方案优化
  • 电子商务网站优点网址和网站的区别
  • 怎么根据网站前端做网站后台seo软件推荐
  • 网站建设运营的灵魂是什么新品推广活动方案