摘要:
从这里我们可以看出 数组的迭代方法里面有一个 属性 [Symbol.iterator] 返回一个 函数 所以我们先定义 初始方法 [Symbol.iterator] 是一个函数 函数里面有一个next方法 next 方法里面 是一个对象 对象有两个key ,一个是done ,一个是value 当 i 阅读全文
摘要:
generator 返回一个生成器,生成器里面有next 方法,调用这个方法会返回一个对象 {done:是否迭代完成 value 结果} function * read() { yield 1; yield 2; yield 3; return 100; } let Iter = read(); c 阅读全文
摘要:
1. 索引类型查询操作符 keyof ,通过keyof我们能够获取一个类型的所有属性名组成的联合类型 keyof操作符,连接一个类型,会返回一个由这个类型的所有属性名组成的联合类型 这里的keyof Info其实相当于"name" | “age” 2.索引访问操作符也就是[],其实和我们访问对象的某 阅读全文
摘要:
// race的原理 Promise.race = function(values){ return new Promise((resolve,reject)=>{ for(let i = 0 ; i< values.length;i++){ let current = values[i]; if((typeof current 'object' && current !==null)|| typ 阅读全文
摘要:
// all的原理 Promise.all = function(values){ return new Promise((resolve,reject)=>{ let results = []; // 结果数组 let i = 0; let processData = (value,index)=>{ result... 阅读全文
摘要:
我们可以把单例类型、联合类型、类型保护和类型别名这几种类型进行合并,来创建一个叫做可辨识联合的高级类型,它也可称作标签联合或代数数据类型。 可辨识联合要求具有两个要素: 可辨识联合要求具有两个要素: 具有普通的单例类型属性(这个要作为辨识的特征,也是重要因素)。 一个类型别名,包含了那些类型的联合( 阅读全文
摘要:
1 自定义类型保护 首先定义一个函数,函数的参数 value 就是要判断的值,在这个例子中 value 的类型可以为 number 或 string,函数的返回值类型是一个结构为 value is type 的类型谓语,value 的命名无所谓,但是谓语中的 value 名必须和参数名一致。 2 . 阅读全文