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

搭建博客网站网站的域名是什么

搭建博客网站,网站的域名是什么,成都市广告制作公司,现在建设网站都用什么软件在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…

在 TypeScript 中,分布式条件类型(Distributive Conditional Types) 是一种特殊的行为,发生在条件类型作用于裸类型参数(Naked Type Parameter) 时。这种特性使得条件类型可以“分布”到联合类型的每个成员上,从而对联合类型进行逐个处理。


1. 分布式条件类型的基本概念

(1) 定义
  • 当条件类型作用于一个裸类型参数(即没有被包裹的泛型参数),并且该参数是一个联合类型时,TypeScript 会将条件类型“分发”到联合类型的每个成员上。
  • 这种行为称为分布式条件类型
(2) 语法
type Distributed<T> = T extends U ? X : Y;
  • 如果 T 是一个联合类型(如 A | B | C),则条件类型会分别对 ABC 应用 T extends U ? X : Y,并将结果重新组合成一个新的联合类型。

2. 示例:分布式条件类型的作用

示例 1:基本行为
type IsString<T> = T extends string ? true : false;type Result = IsString<string | number>; // true | false

在这里:

  • string | number 是一个联合类型。
  • 条件类型 IsString 会被“分发”到 stringnumber 上:
    • stringstring extends string ? true : falsetrue
    • numbernumber extends string ? true : falsefalse
  • 最终结果是 true | false

示例 2:提取字符串类型
type ExtractStrings<T> = T extends string ? T : never;type Result = ExtractStrings<string | number | boolean>; // string

在这里:

  • ExtractStrings 会逐个检查联合类型的每个成员:
    • stringstring extends string ? string : neverstring
    • numbernumber extends string ? number : nevernever
    • booleanboolean extends string ? boolean : nevernever
  • 最终结果是 string

3. 阻止分布式条件类型

如果不想让条件类型“分布”,可以通过将裸类型参数包裹起来(例如使用数组或元组)来阻止分发。

示例:阻止分发
type IsString<T> = [T] extends [string] ? true : false;type Result = IsString<string | number>; // false

在这里:

  • [T]T 包裹在数组中,阻止了分发。
  • 整个联合类型 string | number 被视为一个整体,而不是逐个成员处理。
  • 因为 string | number 不是 string 的子类型,所以结果是 false

4. 实际应用场景

分布式条件类型在实际开发中有许多用途,以下是一些常见的场景:

(1) 过滤联合类型

你可以使用分布式条件类型从联合类型中提取满足条件的成员。

示例:过滤出可调用的类型
type FilterCallable<T> = T extends (...args: any[]) => any ? T : never;type MixedTypes = string | (() => void) | number | ((x: number) => number);type CallableTypes = FilterCallable<MixedTypes>; // () => void | ((x: number) => number)

在这里:

  • FilterCallable 提取了所有可调用的类型。

(2) 提取键名

你可以使用分布式条件类型提取对象的键名。

示例:提取值为字符串的键
type KeysOfType<T, U> = {[K in keyof T]: T[K] extends U ? K : never;
}[keyof T];type Data = {name: string;age: number;email: string;
};type StringKeys = KeysOfType<Data, string>; // "name" | "email"

在这里:

  • KeysOfType 提取了值类型为 string 的键名。

(3) 类型转换

你可以使用分布式条件类型对联合类型的每个成员进行转换。

示例:为每个成员添加前缀
type AddPrefix<T, Prefix extends string> = T extends string? `${Prefix}${T}`: never;type Colors = "red" | "green" | "blue";type PrefixedColors = AddPrefix<Colors, "color_">; // "color_red" | "color_green" | "color_blue"

在这里:

  • AddPrefix 为联合类型的每个成员添加了前缀。

5. 注意事项

(1) 裸类型参数是关键
  • 分布式条件类型只会在裸类型参数上触发。
  • 如果类型参数被包裹(例如放在数组或元组中),分发行为会被阻止。
示例:裸类型与包裹类型的区别
type Distribute<T> = T extends string ? true : false;
type NoDistribute<T> = [T] extends [string] ? true : false;type Result1 = Distribute<string | number>; // true | false
type Result2 = NoDistribute<string | number>; // false
(2) 避免意外分发
  • 如果不希望触发分发,可以通过包裹类型参数来显式阻止。

6. 总结

  • 分布式条件类型的核心作用
    • 对联合类型的每个成员逐个应用条件类型。
    • 支持灵活地过滤、转换和操作联合类型。
  • 关键点
    • 裸类型参数是触发分发的关键。
    • 可以通过包裹类型参数阻止分发。
  • 实际场景
    • 过滤联合类型。
    • 提取键名或特定类型的成员。
    • 动态转换联合类型的成员。

文章转载自:

http://hrJqU5pg.mwhqd.cn
http://e9IV7DDO.mwhqd.cn
http://ZpAzyn0G.mwhqd.cn
http://eaWmCEKe.mwhqd.cn
http://ZZqtHlH0.mwhqd.cn
http://jt6bRb2V.mwhqd.cn
http://H0d1Pix2.mwhqd.cn
http://653hSMl7.mwhqd.cn
http://Ws72eRU5.mwhqd.cn
http://dsyr4qwz.mwhqd.cn
http://jqOrPKR4.mwhqd.cn
http://foVn8v0S.mwhqd.cn
http://K2oDhtlf.mwhqd.cn
http://R0qHaCuy.mwhqd.cn
http://otel45CI.mwhqd.cn
http://UZCWNb9e.mwhqd.cn
http://OCfJVmbJ.mwhqd.cn
http://AbT25d2r.mwhqd.cn
http://DdXIQOuz.mwhqd.cn
http://o2ld98pu.mwhqd.cn
http://lkO4vGqE.mwhqd.cn
http://2C6Df4lJ.mwhqd.cn
http://pFLjbflS.mwhqd.cn
http://yluBknBq.mwhqd.cn
http://pBq8RoUC.mwhqd.cn
http://XycCZm8r.mwhqd.cn
http://u0RTefeS.mwhqd.cn
http://psPgrRSC.mwhqd.cn
http://7ySGI0Fc.mwhqd.cn
http://8yHuZUaA.mwhqd.cn
http://www.dtcms.com/wzjs/677004.html

相关文章:

  • 济南做企业网站的公司wordpress 翻页失效
  • 创业网站模板德庆网站建设价格
  • 松原做网站的公司ip访问 wordpress
  • 鄢陵县北京网站建设赚钱的十大个人网站
  • 曲靖模板网站建设网站设计的必要性
  • 三门峡建设局网站手机网站开发专业
  • 威海住房和城乡建设局网站首页网站设计配色方案
  • 普洱建设工程网站空间站免费版下载
  • 学做面包的网站网站开发一般会使用框架吗
  • 东莞公司网站做优化微网站免费搭建平台
  • 贵阳专业网站建设公司城桥微信网站设计制作
  • 江苏建设网站首页营销型网站免费模板
  • wordpress旅游公司主题深圳搜索排名优化
  • .net 网站 语言互联网公司响应式网站
  • 电子商务网站开发与实现百度老年搜索
  • 网站建设与管理 需求分析如何做网站的流量分析
  • wordpress网站定时更新没有发布慈溪建设网站
  • 什么网站能接工地做ssp媒体服怎样做网站
  • 门户网站免费建设昆明小程序开发公司
  • 帮忙建网站的人公司建设门户网站的总结
  • 企业网站管理系统怎么修改密码网页制作教程赵丰年第三版
  • 制作可以赚钱的网站如何修复网站中的死链
  • 广州网站设计培训怎么做彩票网站收款人
  • 做网站怎么找客户联系方式网站的建设初步定位
  • 重庆渝云建设有限公司官方网站做类似美团的网站吗
  • 阿里云可以建网站吗长沙企业网站seo
  • 工会网站建设请示空调网站模板
  • 建设项目管理公司网站义乌搭建网站
  • 泰州手机网站制作软件设计师考试
  • 毕业设计 建设旅游网站市场营销策略分析案例