相关文章推荐
暴走的茴香  ·  TypeScript中联合类型赋值null/ ...·  3 月前    · 
慷慨大方的皮带  ·  vue3+ts:shims-vue.d.ts·  2 月前    · 
叛逆的山楂  ·  调试 JavaScript 或 ...·  2 月前    · 
烦恼的手电筒  ·  TypeScript 对象数组的类型 - 炽橙子 ·  1 周前    · 
眼睛小的单车  ·  TypeScript入门到精通——TypeS ...·  1 周前    · 
温暖的乒乓球  ·  失效归因分析助力质量改进和与可靠性提升,达观 ...·  11 月前    · 
谦和的猕猴桃  ·  Echart实践小技巧:生成随机颜色函数和颜 ...·  1 年前    · 
大方的黄花菜  ·  JAVA判断两个时间戳,相隔多少分钟_判断一 ...·  1 年前    · 
不羁的烤红薯  ·  [记]WIndow/Linux ...·  1 年前    · 
帅气的火柴  ·  GiantPandaCV - ...·  1 年前    · 
Code  ›  【TS】type 类型过滤属性_ts剔除属性
string 关键词排名优化 sort typescript
https://blog.csdn.net/u013948858/article/details/122961354
豪气的火车
1 年前
    • 1. Typescript 里定义 type 哪些定义方式
    • 2. 基础方法
      • keyof 关键字
      • Condition
      • Pick 内置方法
    • 3. type 类型进行属性过滤
      • 1. 把可选属性变成必选属性
      • 2. 把所有可选的属性过滤掉
      • 3. 把所有指定属性类型过滤掉
      • 4. 把所有指定属性过滤掉

      1. Typescript 里定义 type 哪些定义方式

      • Primitive Type
      • Tuple Type
      • Union Type
      • Intersection Types
      • Type indexing
      • Type from Value
      • Type from Func Return
      • Type from Module
      • Mapped Types
      • Conditional Types
      • Template Union Types

      标记红色的是日常使用的方式,如下图有详细的介绍:
      在这里插入图片描述

      2. 基础方法

      keyof 关键字

      关键词 keyof 的名字叫 索引类型查询操作符 , 类似: Object.keys(Example)

      interface Example {
        a: string;
        b: string;
        c: number;
        d: boolean;
      type Keys = keyof Example   // 等价于 type Keys = 'a' | 'b' | 'c' | 'd'
      

      Condition

      SomeType extends OtherType ? TrueType : FalseType;

      interface A {}
      interface B extends A {}  // B继承于A
      // B是否继承于A?若是,则为number类型;若不是,则为string类型
      type C = B extends A ? number : string  // 等价于 type C = number
      // A是否继承于B?若是,则为number类型;若不是,则为string类型
      type D = A extends B ? number : string  // 等价于 type D = string
      

      Pick 内置方法

      // Pick类型的实现
      type Pick<T, K extends keyof T> = {
          [P in K]: T[P];
      

      3. type 类型进行属性过滤

      1. 把可选属性变成必选属性

      type A = {
          name: string;
          age?: number;
          sex?: number;
      type B = FilterOptional<A> 		// 输出 => { name: string;age: number; sex: number;}
      
      type Concrete<Type> = {
        [Property in keyof Type]-?: Type[Property];
      

      2. 把所有可选的属性过滤掉

       type A = {
          name: string;
          age?: number;
          sex?: number;
      type B = FilterOptional<A> 		// 输出 => { name: string }
      
      type FilterOptional<T extends {}> = Pick<T, { [K in keyof T]-?: undefined extends T[K] ? never : K }[keyof T]>
      type FilterOptional<T extends object> = Pick<T, Exclude<{
          [K in keyof T]: T extends Record<K, T[K]>
          : never
      }[keyof T], undefined>>;
      

      3. 把所有指定属性类型过滤掉

      值为 never 的 key 值是无法被访问到

      过滤掉 string 类型的属性

      type A = {
          name: string;
          age: number;
          sex: number;
      type B = FilterOptional<A> 		// 输出 => { ags: number; sex: number;}
      
      type FilterOptional<Source, Condition> = Pick<
        Source, 
          [K in keyof Source]: Source[K] extends Condition ? K : never
        }[keyof Source]
      type NewType = FilterOptional<A, string>
      

      4. 把所有指定属性过滤掉

      过滤掉 sex 属性

      type A = {
          name: string;
          age: number;
          sex: number;
      // 输出 => { name: string; age: number;}
      
      type NewType = omit<A, 'sex'> // { name: string; age: number;}
      type NewType = omit<A, 'sex' | 'age'> // { name: string;}
      
      1. Utility Types
      2. Keyof Type Operator
      3. Conditional Types
      4. Mapped Types
      文章目录1. Typescript 里定义 type 哪些定义方式2. 基础方法keyof 关键字ConditionPick 内置方法3. type 类型进行属性过滤1. 把可选属性变成必选属性2. 把所有可选的属性过滤掉3. 把所有指定属性类型过滤掉4. 把所有指定属性过滤掉参考author: jwenshdate: 2022.02.161. Typescript 里定义 type 哪些定义方式Primitive TypeTuple TypeUnion TypeIntersection | { type : 'text' ; content : string } | { type : 'img' ; src : string } | ... ; // Imagine this union is huge! type Result = | { type : 'ok' ; data : Data } | { type : 'error' ; error : Error } ; const result : Res
      ts类型推断测试 这是一个单元测试类型推断本身的示例。 尽管TypeScript的类型系统具有表现力,但它是可编程的,可能需要测试。 这样的TDD流对于提供深奥的推理是有用的。 这个怎么运作 它使用TypeScript提供的CompilerAPI。 这使Node.js可以知道TypeScript编译器正在推断的类型。 在这里,测试框架使用笑话,但是您可以自由选择它。 如果将鼠标悬停在VS Code中的变量上,则可以看到推断的类型。 此处准备的函数是仅向Node.js展示的函数。 下面的函数infer是告诉Node.js。 const w0 = 0 ; const infer = createDeclarationInferencer ( srcFileName ) ; test ( "Widening Literal Type looks like as literal." ,
      不可偏废的 TS 类型 TypeScript 的 never 类型被讨论得非常少,因为它不像其他类型那样常用,或者不可替代。对于 TypeScript 的初学者来说,never 类型很容易被忽略,因为它只会出现在处理高级类型(比如条件类型)时,或者阅读那些神秘兮兮的类型错误信息时。 实际上 never 类型在 TypeScript 中的优秀用例比想象中要多。当然,它也有一些特有的你需要小心的陷阱。 本文的主要内容包含以下几个部分: never 类型的意义和我们需要它的原因。 never 的应用场景以及需
      1、准备对象数组 let cities = [ { id: 1, chineseName: '合肥', englishName: 'Hefei', area: '11445.1 km²', population: '818.9 万'}, { id: 2, chineseName: '南京', englishName: 'Nanjing', area: '6587.02 km²'}, 2、添加属性 let findCity = cities.find(city => city.i
      周末懒惰了两天,滚回来继续做笔记。 今天更新的是ts的万能过滤器。 (注:师父说理解了ts的类型之后,可以更好的理解js,所以一些基础练习都用ts来做。) 上一篇笔记里提到了单数选择器、双数选择器、单双数选择器以及倍数选择器。 那么,是不是有一种选择器可以万能选择呢? 也就是说,可以通过用户自定义的条件,来筛选想要的内容呢? 引入一段TypeScript...
       站长网站优化时,不是拿到一个网站就去做关键词做外链,第一步应是要去了解网站,制作可 执行的网站优化方案。那要想制作份完善的网站优化方案,最重要的是那几步,方案中应该要包括哪些内容。   第一:分析自身网站。首先要分析自己的网站属于什么类型,网站的主要方向是怎样的,网站的主关键词是什么,还有就是网站优化前的基本数据。从谷歌分析工具中可以看到网站的一些基本数据,记录这些基本的数据,可以清楚的和优化后的网站进行对比,这样才能看出网站优化后到底有没有效果。从而判断我们的网站优化是否成功,这也是站长们想看到的最终结果。   第二:定位对手网站。自身的网站分析完后,并可定出网站的主关键词,主关键词定好后,就是要通过这个关键词找到网站的对手,在搜索引擎输入相应的关键词,找到关键词排名前2页的站点,这些站点都算是你网站的竞争对手。不管竞争对手是首页优化,还是单页优化,你都要加入竞争对手的行列,别人竟然是有排名,肯定是有他做的比较好的地方。   第三:分析竞争对手。竞争对手确定好以后,就是要分享竞争对手的网站。很多站长可能会很迷惑,我做我自己的网站,我分析别人的干嘛。他是你的竞争对手,那你就要从他那找到好的地方,用到自己的网站上,然后去除他不好的,这样你的网站才能比他做的好。分析竞争对手要从以下几个方面进行分析。   首先:分析对手的基本数据。对方网站的首页快照情况,网站的收录,网站的雅虎外链数,网站的域名注册时间等。分析这些数据的同时也要和自己的网站进行对比,看自己的网站和别人的差距在那,不足的地方在日后的优化过程中要改进。   其次:分析对手网站的meta标签。看对手网站的meta标签title属性,看别人是如何部署自己的关键词,关键词的密度是多少。还有就是description属性,虽然蜘蛛不抓取,但是呈现给用户的,这样对用户的选择是很重要的,用户往往会根据网站的描述,选择适合自己的网站。   最后:分析对手网站的不同分类。往往网站优化会利用分类去优化,一级分类页面优化时会给分类添加一段文字描述,80个字符左右,这样可以提高用户的体验,同时也能提高抓取对分类页面的抓取。分类页面最好是能添加上面包屑的导航,这样可以更好的提供用户体验。   第四:给自身网站定优化方案。在第一步的时候我们已经用谷歌的分析工具分析了网站的基本数据,基本数据分析好后,我们能看到网站的基本关键词来源,流量来源,和搜索引擎的一些数据。根据这些数据我们要定制出符合网站优化的方案,如不同的关键词要选择不同的页面去优化,不同页面要有适合的title;网站导航问题要进行面包屑的导航;网站URL是否要简化;用谷歌管理员工具查看网站是否有重复页面,重复元说明等;然后给网站定制合理的外链建设方案。   其实通过以上几步的分析过程,要想给网站定制一个合理的方案基本上是可以了,但实际问题还是要考虑到你网站的可执行,要根据你网站的数据来源,一定要定制可执行的网站方案。
      * 通用排序方法 * @param arr 需要排序的数组 * @param field 排序字段 值类型传null 单字段传string 多字段传数组[["field1", SortType], ["field2", SortType]] 可传属性名 方法名 * @param sortType 排序类型 SortType枚举 * @returns * 值排序示例:Utils.mySort(sortArr, null, SortType.Down); * 单字段排序示例:Utils.mySort(sortArr, "getItemQuality", SortType.OrderDown); * 多字段排序示例:Utils.mySort(stoneArr, [["getItemQuality", SortType.OrderUp], ["getItemNum", SortType.OrderUp]]); public static mySort(arr: any[], field?: any, sortType = SortType.OrderUp): void 支持各种类型的排序,可以免去自己写compare方法 jwensh: cat /sys/class/net/wlan0/statistics/tx_bytes cat /sys/class/net/wlan0/statistics/rx_bytes 我看还可以获取,但是这个是全部的发送流量 【Android】性能测试之获取Android流量数据 jwensh: 你用的什么手机?
 
推荐文章
暴走的茴香  ·  TypeScript中联合类型赋值null/undefined_type 'boolean' is not assignable to type 'location
3 月前
慷慨大方的皮带  ·  vue3+ts:shims-vue.d.ts
2 月前
叛逆的山楂  ·  调试 JavaScript 或 TypeScript 应用 - Visual Studio (Windows) | Microsoft Learn
2 月前
烦恼的手电筒  ·  TypeScript 对象数组的类型 - 炽橙子
1 周前
眼睛小的单车  ·  TypeScript入门到精通——TypeScript类型系统基础——数组类型 - 左扬
1 周前
温暖的乒乓球  ·  失效归因分析助力质量改进和与可靠性提升,达观智能制造知识图谱_故障
11 月前
谦和的猕猴桃  ·  Echart实践小技巧:生成随机颜色函数和颜色数组_51CTO博客_echart 颜色
1 年前
大方的黄花菜  ·  JAVA判断两个时间戳,相隔多少分钟_判断一个时间戳和当前时间差多少分钟_ufo2910628的博客-CSDN博客
1 年前
不羁的烤红薯  ·  [记]WIndow/Linux 获取本机(全部)IPv4、IPv6、MAC地址方法 (C/C++)_superXX07的博客-CSDN博客
1 年前
帅气的火柴  ·  GiantPandaCV - BBuf的个人空间 - OSCHINA - 中文开源技术交流社区
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号