首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

类型“”never“”必须具有返回迭代器的“[Symbol.iterator]()”方法。“打字脚本

类型"never"是 TypeScript 中的一种特殊类型,它表示永远不会有返回值的类型。在函数中使用类型"never"意味着函数要么抛出异常,要么进入无限循环,从而永远不会返回。

在 TypeScript 中,如果一个函数的返回类型被推断为"never",则意味着该函数在所有可能的输入上都会抛出异常。这可以帮助开发人员在编译时捕获潜在的错误。

以下是一个示例,演示了如何使用类型"never":

代码语言:txt
复制
function throwError(message: string): never {
  throw new Error(message);
}

function infiniteLoop(): never {
  while (true) {
    // 无限循环
  }
}

在上面的示例中,函数throwError抛出一个错误,并且返回类型被指定为"never"。这意味着该函数永远不会正常返回,而是会抛出一个错误。

函数infiniteLoop包含一个无限循环,它也被指定为返回类型"never"。因为该函数永远不会停止执行,所以它也永远不会返回。

类型"never"在某些情况下也可以用作类型推断的辅助工具。例如,当使用泛型类型时,可以使用类型"never"来排除某些类型。

总结:

  • 类型"never"表示永远不会有返回值的类型。
  • 函数的返回类型为"never"意味着函数要么抛出异常,要么进入无限循环。
  • 类型"never"可以帮助开发人员在编译时捕获潜在的错误。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云函数计算(云原生 Serverless 产品):https://cloud.tencent.com/product/scf
  • 腾讯云容器服务(云原生容器化部署产品):https://cloud.tencent.com/product/tke
  • 腾讯云数据库(包括云数据库 MySQL、云数据库 PostgreSQL 等):https://cloud.tencent.com/product/cdb
  • 腾讯云云服务器(提供云上虚拟服务器):https://cloud.tencent.com/product/cvm
  • 腾讯云人工智能(包括图像识别、语音识别等 AI 服务):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(提供物联网设备连接、数据采集等服务):https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动开发(提供移动应用开发相关服务):https://cloud.tencent.com/product/mad
  • 腾讯云对象存储(提供海量数据存储服务):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(提供区块链服务和解决方案):https://cloud.tencent.com/product/baas
  • 腾讯云虚拟专用网络(提供安全、可扩展的云上网络):https://cloud.tencent.com/product/vpc
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《你不知道JavaScript》:迭代Iterator背景梳理

ES6中规定对象Symbol.iterator属性指向该对象默认迭代方法,当对象进行for...of..遍历迭代时,会调用对象Symbol.iterator方法返回该对象默认迭代。...Symbol.iterator属性本身是一个函数,就是当前数据结构默认迭代生成函数。执行这个函数,就去返回一个迭代。...至于属性名Symbol.iterator,它是一个表达式,返回Symbol对象iterator属性,这是一个预定义好类型为 Symbol 特殊值,所以要放在方括号内。...一个对象如果要具备可被for…of循环调用 Iterator 接口,就必须Symbol.iterator属性上部署遍历生成方法(原型链上对象具有方法也可)。...从ES6开始,从一个iterable中提取迭代方法是:iterable必须支持一个函数,其名称是专门ES6符号值Symbol.iterator。调用这个函数时,它会返回一个迭代

1.5K10

迭代与 for of使用和原理

迭代 所谓迭代,其实就是一个具有 next() 方法对象,每次调用 next() 都会返回一个结果对象,该结果对象有两个属性,value 表示当前值,done 表示遍历是否结束。...而且每个集合类型都有一个默认迭代,在 for-of 循环中,如果没有显式指定则使用默认迭代。...数组和 Set 集合默认迭代是 values() 方法,Map 集合默认迭代是 entries() 方法。...而之所以这么做,就要提到迭代 return 方法。 引用阮一峰老师 ECMAScript 6 入门: 遍历对象除了具有 next 方法,还可以具有 return 方法和 throw 方法。...如果你自己写遍历对象生成函数,那么 next 方法必须部署,return 方法和 throw 方法是否部署是可选

1.5K30
  • 【JS】230-迭代与 for of使用和原理

    迭代 所谓迭代,其实就是一个具有 next() 方法对象,每次调用 next() 都会返回一个结果对象,该结果对象有两个属性,value 表示当前值,done 表示遍历是否结束。...而且每个集合类型都有一个默认迭代,在 for-of 循环中,如果没有显式指定则使用默认迭代。...数组和 Set 集合默认迭代是 values() 方法,Map 集合默认迭代是 entries() 方法。...而之所以这么做,就要提到迭代 return 方法。 引用阮一峰老师 ECMAScript 6 入门: 遍历对象除了具有 next 方法,还可以具有 return 方法和 throw 方法。...如果你自己写遍历对象生成函数,那么 next 方法必须部署,return 方法和 throw 方法是否部署是可选

    89641

    ES6 系列之迭代与 for of

    迭代 所谓迭代,其实就是一个具有 next() 方法对象,每次调用 next() 都会返回一个结果对象,该结果对象有两个属性,value 表示当前值,done 表示遍历是否结束。...而且每个集合类型都有一个默认迭代,在 for-of 循环中,如果没有显式指定则使用默认迭代。...数组和 Set 集合默认迭代是 values() 方法,Map 集合默认迭代是 entries() 方法。...而之所以这么做,就要提到迭代 return 方法。 引用阮一峰老师 ECMAScript 6 入门: 遍历对象除了具有 next 方法,还可以具有 return 方法和 throw 方法。...如果你自己写遍历对象生成函数,那么 next 方法必须部署,return 方法和 throw 方法是否部署是可选

    49910

    Symbol.iterator和Symbol.asyncIterator

    symbol是ES6标准中新增一种基本数据类型,symbol 值是通过 Symbol()函数返回,每一个 symbol 值都是唯一,即使传入相同描述值。...那什么是迭代呢?迭代就是为实现对不同集合进行统一遍历操作一种机制,在es6中有三类结构生来就具有Iterator属性:数组、类数组对象、Map和Set结构。...会返回一个对象,这个对象就是一个遍历对象,而作为遍历对象,其必须具备特征就是必须具备next()方法。...Symbol.asyncIteratorSymbol.asyncIterator 符号用于标识一个异步迭代,作用与 Symbol.iterator 相同,但产生值期待为 Promise 实例,该异步迭代被...和Symbol.iterator一样都会返回一个对象,一个遍历对象,同样在Symbol.asyncIterator里也有有一个next()方法,不同是Symbol.asyncIterator里面返回

    18020

    JavaScript 高级程序设计(第 4 版)- 迭代与生成器

    可以把可迭代对象理解成数组或集合这样集合类型对象,其包含元素是有限,而且都具有无歧义遍历顺序。...默认迭代属性必须引用一个迭代工厂函数 调用上述工厂函数必须返回一个新迭代 实现Iterator接口内置类型 String Array Map Set arguments对象 NodeList...,那么这个对象也就实现了这个接口 # 迭代协议 迭代是一种一次性使用对象,用于迭代与其关联迭代对象 迭代API使用next()方法在可迭代对象中遍历数据 每次成功调用next(),都会返回一个...或throw提前退出 解构操作并未消费所有值 return()方法必须返回一个有效IteratorResult对象 简单情况下,可以只返回 { done: true } 该返回值只会用在生成器上下文中...)状态 与迭代相似,生成器对象也实现了Iterator接口,具有next()方法

    59550

    可以迭代大部分数据类型 for…of 为什么不能遍历普通对象?

    实际上,任何具有 Symbol.iterator 属性元素都是可迭代。我们可以简单查看几个可被for of迭代对象,看看和普通对象有何不同: ? ? ?...而 iterator 遍历过程,则是类似 Generator 方式,迭代时不断调用next方法返回一个包含value(值)和done属性(标识是否遍历结束)对象。...; yield*:_yield*后面跟是一个可遍历结构,它会调用该结构遍历接口; 由于数组遍历会调用遍历接口,所以任何接受数组作为参数场合,其实都调用; 字符串是一个类似数组对象,也原生具有...迭代模式 迭代模式提供了一种方法顺序访问一个聚合对象中各个元素,而又无需暴露该对象内部实现,这样既可以做到不暴露集合内部结构,又可让外部代码透明地访问集合内部数据。...迭代模式为遍历不同集合结构提供了一个统一接口,从而支持同样算法在不同集合结构上进行操作。 不难发现,Symbol.iterator实现就是一种迭代模式。

    1.1K30

    新手都能看得懂 ES6 Iterators

    Rowling'}, ... ] 开发人员必须知道返回所有数据方法的确切名称和返回类型。 如果我们规定方法名称和它返回类型是固定不变呢?...同时,Symbol.iterator 返回一个名为迭代对象,这个迭代将拥有一个名为next方法,该方法返回一个具有键值为 value 和 done 对象。...值键 value 包含当前值,它可以是任何类型,done 是布尔值,它表示是否获取了所有的值。 下图可以帮助建立可迭代对象、迭代和next之间关系,这种关系称为迭代协议。...image.png 根据Axel Rauschmayer博士《探索JS》一书: 可迭代是一种数据结构,它希望使其元素对外部可访问,通过实现一个关键字是Symbol.iterator方法来实现,该方法迭代工厂...方法 image.png 在第4行,我们创建迭代

    53820

    ES6 学习笔记(十一)迭代和生成器函数

    从以前for循环到之后filter、map再到后来for…in和for…of迭代机制。只要具有iterator接口都可被迭代。...2、迭代 Iterator 2.1 含义 迭代(iterator)为各种数据结构,提供一个统一、简便访问接口,简单说,迭代可以是数组或对象遍历方式。...常见具有这一特点数据结构有:Array、Map、Set、String、TypedArray(类型数组)、函数 arguments 对象、NodeList 对象 2.3.2 示例1:数组iterator...2.3.3 对象Iterator 一个对象如果要具备可被for…of循环调用 Iterator 接口,就必须Symbol.iterator属性上部署遍历生成方法(原型链上对象具有方法也可)...3.2 工作过程 遍历对象next方法运行逻辑: 遇到yield表达式,就暂停执行后面的操作,并将紧跟在yield后面的那个表达式值,作为返回对象value属性值。

    23220

    ES6中Iterator 和for of循环

    一、Iterator(遍历存在 1、迭代模式 迭代模式是指提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象内部表示。...以上数据类型,都有 Symbol.iterator 属性,属性值是一个函数,执行这个函数就会返回一个迭代。这个迭代就有 next 方法可顺序迭代子元素。...遍历对象根本特征就是具有 next 方法。 每次调用 next 方法,都会返回一个代表当前成员信息对象,具有 value 和 done 两个属性。...另外,for...of 循环调用遍历接口,数组遍历接口只返回具有数字索引属性。这一点跟 for...in 循环不一样。...Iterator 接口,就必须Symbol.iterator 属性上部署遍历生成方法(原型链上对象具有方法也可)。

    82220

    揭秘ES6迭代

    一些内置类型都是内置迭代类型并且有默认迭代行为, 比如 Array or Map, 另一些类型则不是 (比如Object) 。...为了变成可迭代对象, 一个对象必须实现 @@iterator 方法, 意思是这个对象(或者它原型链 prototype chain 上某个对象)必须有一个名字是 Symbol.iterator 属性...说云山雾罩,简单总结: 1、迭代就是满足迭代协议对象 2、迭代对象原型上必须有一个@@iterator 方法。 3、这个方法可以被对象上Symbol.iterator属性访问到。...4、被迭代时,@@iterator方法被调用并且无参数,返回一个迭代,这个迭代上有一个next方法 5、next方法执行会便利其属性,返回一个对象对象属性有value,done为false一直遍历,...5、能被for of 循环就是迭代。 可迭代对象必须存在[Symbol.iterator]方法,该方法一个无参函数,返回迭代协议对象。

    40251

    ES6迭代简单指南和示例

    我们将在本文中分析迭代迭代是在JavaScript中循环任何集合一种新方法。它们是在ES6中引入,由于它们广泛用途和在不同地方使用而变得非常流行。...Rowling'}, ... ] 开发人员必须知道返回所有数据方法的确切名称和返回类型。 如果我们规定方法名称和它返回类型是固定不变呢?...同时,Symbol.iterator 返回一个名为迭代对象,这个迭代将拥有一个名为next方法,该方法返回一个具有键值为 value 和 done 对象。...根据Axel Rauschmayer博士《探索JS》一书: 可迭代是一种数据结构,它希望使其元素对外部可访问,通过实现一个关键字是Symbol.iterator方法来实现,该方法迭代工厂,也就是说...方法 在第4行,我们创建迭代

    1.5K40

    【深扒】 JavaScript 中迭代

    手写实现可迭代对象 一个数据结构只要具有 Symbol.iterator 属性,就可以认为是“可遍历”。...Symbol.iterator 属性本身是一个函数,就是当前数据结构默认遍历生成函数,执行这个函数,就会返回一个迭代对象。...方法,并能够执行返回迭代对象,同时验证了for...of循环成功执行 let arr = [1, 2, 3] let it = arr[Symbol.iterator]()//返回迭代对象 console.log...需要特别注意是,return 方法必须有一个 object 类型返回值 我们在前面代码基础上添加上 return 方法,并在 for...of 循环中采用 break 语句来中断循环,循环提前退出...而 for...of 执行时候会自动调用迭代来取值 只有实现了 Iterator 接口对象才能采用 for...of 迭代是一个返回迭代对象方法 ES6 中很多场景都采用了 Iterator

    53320

    从理解到实现轻松掌握 ES6 中迭代

    Symbol.iterator 支持数据结构 ES6 中提供了 Symbol.iterator 方法,该方法返回一个迭代对象,目前 Array、Set、Map 这些数据结构默认具有 Symbol.iterator...next 方法 调用可迭代对象 Symbol.iterator 方法返回一个迭代对象,它接口中有一个 next 方法,该方法返回 value 和 done 两个属性,其中 value 属性是当前成员值...注意 Map 调用 Symbol.iterator 方法返回是一个 entries 方法,该方法返回是一个新迭代对象且按插入顺序包含了 Map 对象中每个元素 [key, value] 数组,...所以调用 Map 实例 keys 或 values 方法也会返回一个新迭代对象。...根据迭代协议定义这个迭代对象要返回一个 next() 方法,这个 next() 方法返回一个包含 value、done 属性对象。

    44710

    【云+社区年度征文】再看JavaScript,那些遗漏或易混淆知识点(2)

    这个方法必须返回一个 迭代(iterator) —— 一个有 next 方法对象。 从此开始,for..of 仅适用于这个被返回对象。...next() 方法返回结果格式必须是 {done: Boolean, value: any},当 done=true 时,表示迭代结束,否则 value 是下一个值。...技术上来说,可迭代对象必须实现 Symbol.iterator 方法。 obj[Symbol.iterator]() 结果被称为 迭代(iterator)。由它处理进一步迭代过程。...一个迭代必须有 next() 方法,它返回一个 {done: Boolean, value: any} 对象,这里 done:true 表明迭代结束,否则 value 就是下一个值。...这种对象可能还具有其他属性和方法,但是没有数组内建方法

    79300

    再看JavaScript,那些遗漏或易混淆知识点(2)

    这个方法必须返回一个 迭代(iterator) —— 一个有 next 方法对象。 从此开始,for..of 仅适用于这个被返回对象。...next() 方法返回结果格式必须是 {done: Boolean, value: any},当 done=true 时,表示迭代结束,否则 value 是下一个值。...技术上来说,可迭代对象必须实现 Symbol.iterator 方法。 obj[Symbol.iterator]() 结果被称为 迭代(iterator)。由它处理进一步迭代过程。...一个迭代必须有 next() 方法,它返回一个 {done: Boolean, value: any} 对象,这里 done:true 表明迭代结束,否则 value 就是下一个值。...这种对象可能还具有其他属性和方法,但是没有数组内建方法

    91810

    ES6之Iterator

    迭代对象是一个特殊接口,所有迭代对象都有一个next()方法,每次调用都返回一个结果对象。...结果对象有两个属性:一个是value表示下一次返回值,另一个是Boolean类型值done,当没有更多可返回数据时返回true。迭代对象内部本质其实就是存在一个指针,用来指向集合中值位置。...为了变成可迭代对象, 一个对象必须实现 @@iterator 方法, 意思是这个对象(或者它原型链 prototype chain 上某个对象)必须有一个名字是 Symbol.iterator 属性...自定义可迭代 满足可迭代协议。 存在[Symbol.iterator]属性。 满足迭代协议。 [Symbol.iterator]属性要求返回一个可迭代对象。...(详情参照Demo) 自行实现需要[Symbol.iterator]方法返回一个对象,其实迭代可以看作就是一个对象,这个对象存在一个next方法

    21720

    【深扒】 JavaScript 中迭代

    手写实现可迭代对象 一个数据结构只要具有 Symbol.iterator 属性,就可以认为是“可遍历”。...Symbol.iterator 属性本身是一个函数,就是当前数据结构默认遍历生成函数,执行这个函数,就会返回一个迭代对象。...方法,并能够执行返回迭代对象,同时验证了for...of循环成功执行 let arr = [1, 2, 3] let it = arr[Symbol.iterator]()//返回迭代对象 console.log...需要特别注意是,return 方法必须有一个 object 类型返回值 我们在前面代码基础上添加上 return 方法,并在 for...of 循环中采用 break 语句来中断循环,循环提前退出...而 for...of 执行时候会自动调用迭代来取值 只有实现了 Iterator 接口对象才能采用 for...of 迭代是一个返回迭代对象方法 ES6 中很多场景都采用了 Iterator

    50031

    ES6:【深扒】 JavaScript 中迭代

    手写实现可迭代对象 一个数据结构只要具有 Symbol.iterator 属性,就可以认为是“可遍历”。...Symbol.iterator 属性本身是一个函数,就是当前数据结构默认遍历生成函数,执行这个函数,就会返回一个迭代对象。...方法,并能够执行返回迭代对象,同时验证了for...of循环成功执行 let arr = [1, 2, 3] let it = arr[Symbol.iterator]()//返回迭代对象 console.log...需要特别注意是,return 方法必须有一个 object 类型返回值 我们在前面代码基础上添加上 return 方法,并在 for...of 循环中采用 break 语句来中断循环,循环提前退出...而 for...of 执行时候会自动调用迭代来取值 只有实现了 Iterator 接口对象才能采用 for...of 迭代是一个返回迭代对象方法 ES6 中很多场景都采用了 Iterator

    38130
    领券