摘要:一、使用介绍 条件类型基本语法: T extends U ? X : Y; 如果占位符类型U是一个可以被分解成几个部分的类型,譬如数组类型,元组类型,函数类型,字符串字面量类型等。这时候可以通过infer来获取U类型中某个部分的类型。 官方解释:现在在有条件类型的 extends 子语句中,允许出现
阅读全文
摘要:一、什么是类型兼容性 TS 的类型兼容性是指当一个类型的值可以被另一个类型的变量所接受时,这两种类型就是兼容的 集合论中,如果一个集合的所有元素在集合B中都存在,则A是B的子集;类型系统中,如果一个类型的属性更具体,则该类型是子类型。(因为属性更少则说明该类型约束的更宽泛,是父类型) 因此,我们可以
阅读全文
摘要:题目:实现内置的Exclude <T,U>,从 T 中排除可分配给 U 的那些类型 type x = string | number | boolean type y = string | number type c = MyExclude<x, y> const b: c = true 解答: t
阅读全文
摘要:🐹 一、T[number]、T['length'] T[number] 用来获取元组的元素类型联合T['length'] 用来获取元组的元素类型个数 💡元组类型是另一种Array类型,它确切地知道它包含多少元素,以及在特定位置包含哪些类型。 type A = ['a', 'b', 'c'] ty
阅读全文
摘要:🐡 需求: Omit 会创建一个省略 K 中字段的 T 对象。 这和 Pick 很像,只是结果相反,Pick 是挑选需要的字段,而 Omit 则是排除指定的字段 🤔 思考:根据现了解的关键字, keyof 肯定要用,可是怎么排除其他的键?😊 思路:用 never 来做键,就能在这个字段值排除了
阅读全文
摘要:🐹 第一题 🙋:下面的代码为什么会提示错误,应该如何解决上述问题? type User = { id: number; kind: string; }; function makeCustomer<T extends User>(u: T): T { //不能将类型“{ id: number;
阅读全文
摘要:一、内置的类型工具 1. 适用于 interface 的类型操作符 这些操作符主要用于处理对象类型,比如 interface 和对象字面量类型 { key: value }。它们通常用于修改、选取或排除对象的属性。 🐡 Partial<T>:将对象类型 T 的所有属性设为可选。 interface
阅读全文
摘要:🐹 1. 非空断言操作符(!) 在上下⽂中当类型检查器⽆法断定类型时,⼀个新的后缀表达式操作符 ! 可以⽤于断⾔操作对象是⾮ null 和⾮ undefined 类型 🐡 赋值时忽略 null 和 undefined const fn = (name: string | null | undef
阅读全文
摘要:🐹 1. 一个问号(?) 在 TypeScript 中用于表示可选属性和可选参数,使得属性和参数可以选择性地存在。主打的就是两个字“随意” 🐡 可选属性: 在对象类型中,可以使用问号来标记某个属性是可选的。这意味着该属性可以存在,也可以不存在。 interface Person { name:
阅读全文
摘要:1. 按位取反运算符:~ 对返回值进行按位取反(所有正整数的按位取反是其本身+1的负数,所有负整数的按位取反是其本身+1的绝对值,零的按位取反是 -1。其中,按位取反也会对返回值进行强制转换,将字符串5转化为数字5,然后再按位取反。false被转化为0,true会被转化为1。) 总之一句话:返回值会
阅读全文
摘要:1. push() push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 var a = [🍎,🍏,🍉] a.push(🍉) console.log(a); //[🍎,🍏,🍉,🍉] 2. pop() pop() 方法用于删除数组的最后一个元素并返回。 var a =
阅读全文
摘要:1. 多条件 if 语句 将多个值放入一个数组中,然后调用该数组的 include 方法。 ☘️ 普通写法 if (x "abc" || x "def" || x "ghi" || x "jkl") { //logic } ☘️ 简写方法 if (["abc", "def", "ghi", "jkl
阅读全文
摘要:在JavaScript中,可以使用Set对象来检查数组中是否有重复值。Set对象只会保存唯一的值。 值数组 如果你要检查的数组是一个值的集合,并且你想知道这些值是否有重复,可以使用以下代码: function hasDuplicates(array) { return new Set(array).
阅读全文
摘要:直接使用forEach会遍历所有的数据,无法通过break或continue跳出,所以可以使用Array.some()或Array.every()来实现。 Array.some() Array.some() 遍历整个数组,直到某条判断返回true,则结束遍历并跳出,整个遍历的结果也为true; Ar
阅读全文
摘要:一、什么是jQuery 1. jQuery是什么? jQuery就是一个JavaScript库,它就是通过原生JS来进行一些列的封装,它是John Resig在2006年创建的 一个开源项目,随着越来越多的人使用,jQuery已经集成了JS、CSS、DOM、Ajax与一体,他可以使用很少的代码完成复
阅读全文
摘要:一、概况 1. 概念简介 CreateJS是基于HTML5开发的一套模块化的库和工具,基于这些库,可以非常快捷地开发出基于HTML5的游戏、动画和交互应用。历史可以追溯到7年前 flash 使用慢慢变少那个时代,gskinner 开发它作为“下一代”的富交互的工具库,Adobbe、微软、火狐官方资助
阅读全文
摘要:⏰ 方法一: indexOf() (推荐) var str = '123' console.log(str.indexOf("3")!= -1) //true indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果要检索的字符串值没有出现,则该方法返回-1。存在返回1。 ⏰
阅读全文
摘要:一、基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fun = (name) => { // 函数体 return `Hello ${name} !`; }; // 等同于 let fun = function (name) { // 函
阅读全文
摘要:一、模块(外部) TypeScript 在 1.5 版本之前,有内部模块和外部模块的概念,从 1.5 版本开始,内部模块改称作命名空间,外部模块改称为模块。TypeScript 中的模块系统是遵循 ES6 标准的,TypeScript 和 ES6 保持一致,包含顶级 import 或 export
阅读全文
摘要:一、文件类型 TS 中有两种文件类型: ⏰ .ts文件(代码实现文件) 1. 既包含类型信息又可执行代码 2. 可以被编译为 .js 文件,然后执行代码 3. 通常用于编写程序代码的地方 ⏰ .d.ts文件(类型声明文件) 1. 只包含类型信息的类型声明文件 2. 不会生成 .js 文件,仅用于提供
阅读全文