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

国家标准物质网站建设集团建设网站

国家标准物质网站建设,集团建设网站,免费个人二级域名网站,dw中旅游网站怎么做TypeScript 3.7 发布了#xff0c;此版本带来了许多新特性。Optional Chaining首先一大亮点是 Optional Chaining#xff0c;这是社区呼唤特别强烈的一个 ECMAScript 特性。最初它是 TypeScript 的 issue 跟踪器上第 16 个 issue#xff0c;于 5 年前提交#xff0c;要知道…TypeScript 3.7 发布了此版本带来了许多新特性。 Optional Chaining首先一大亮点是 Optional Chaining这是社区呼唤特别强烈的一个 ECMAScript 特性。最初它是 TypeScript 的 issue 跟踪器上第 16 个 issue于 5 年前提交要知道目前总共有多达 23000 个 issue。当时 TC39 还没有正式提案这些年来开发者一直要求实现该特性但是为了不与 ECMAScript 建议冲突迟迟没有实现相反 TS 开发团队一直在帮助推动该提案实现标准化并最终推及所有 JavaScript 与 TypeScript 开发者。 Optional Chaining 特性主要用于保护出现在属性路径中 null 和 undefined 值像 C# 等语言中已经有用于访问属性链的语法糖可以在对象层次结构中的任何地方处理遇到的 null 和 undefined 情况使它可以正常执行而不会抛出错误。具体来讲在向树状结构深处进行属性值访问时通常需要检查中间节点是否存在var street user.address user.address.street; 许多 API 返回一个对象或 null/undefined并且可能只想在结果不为 null 时从结果中提取属性var fooInput myForm.querySelector(input[namefoo])var fooValue fooInput ? fooInput.value : undefined Optional Chaining 运算符允许开发人员直接用简单的方式处理这种情况而不用进行重复性操作或者使用临时变量分配中间结果var street user.address?.streetvar fooValue myForm.querySelector(input[namefoo])?.value 因为是保护访问属性链时的 null 与 undefined所以 Optional Chaining 运算符也叫做“安全导航运算符”TC39 标准中给出的该运算符是“?.”它的语法可以适用于三种场景obj?.prop // 自判断静态属性访问obj?.[expr] // 自判断动态访问func?.(...args) // 自判断函数或方法调用 null 判断合并Nullish Coalescing另一个与 Optional Chaining 很接近的特性是 null 判断合并Nullish Coalescing由特定的 Nullish Coalescing 操作符 ?? 启用它也是即将到来的 ECMAScript 特性。考虑以下代码let x (foo ! null foo ! undefined) ? foo : bar(); 如果 foo 不为空并且不等于 undefined则执行 bar()。它现在可以等效于let x foo ?? bar(); 断言如果发生意外情况则有一组特定函数会抛出错误这被称为断言。例如 Node.js 有一个专用的 assert 函数assert(someValue 42); 如果 someValue 不等于 42则 assert 将抛出 AssertionError。JavaScript 中的断言通常用于防止传入不正确的类型例如function multiply(x, y) { assert(typeof x number); assert(typeof y number);return x * y;} 不过在 TypeScript 中会有一些类型问题function yell(str) { assert(typeof str string);return str.toUppercase();// Oops! We misspelled toUpperCase.// Would be great if TypeScript still caught this!} 替代方法是改写代码以便语言可以对其进行分析但这不太方便function yell(str) {if (typeof str ! string) {throw new TypeError(str should have been a string.) }// Error caught!return str.toUppercase();} TypeScript 希望以最小的破坏性方式保留现有 JavaScript 结构因此 TypeScript 3.7 引入了一个称为“断言签名”的新概念可以对这些断言函数进行建模。第一种断言签名对 Node.js assert 的执行方式进行建模它确保在包含范围的其余部分中无论检查什么条件都必须为真。function assert(condition: any, msg?: string): asserts condition {if (!condition) {throw new AssertionError(msg) }} assert condition 表示如果 assert 返回则传递给 condition 参数的任何内容都必须为 true否则会引发错误这意味着对于其余范围该条件必须是 true。以前边的 yell 为例确实可以捕获到类型错误function yell(str) { assert(typeof str string);return str.toUppercase();// ~~~~~~~~~~~// error: Property toUppercase does not exist on type string.// Did you mean toUpperCase?}function assert(condition: any, msg?: string): asserts condition {if (!condition) {throw new AssertionError(msg) }} 另一种断言签名不检查条件而是告诉 TypeScript 特定的变量或属性具有不同的类型。function assertIsString(val: any): asserts val is string {if (typeof val ! string) {throw new AssertionError(Not a string!); }} 这里的 assert val is string确保在对 assertIsString 进行任何调用之后传入的任何变量都将是字符串。function yell(str: any) { assertIsString(str);// Now TypeScript knows that str is a string.return str.toUppercase();// ~~~~~~~~~~~// error: Property toUppercase does not exist on type string.// Did you mean toUpperCase?} 这些断言签名与编写类型谓词签名非常相似function isString(val: any): val is string {return typeof val string;}function yell(str: any) {if (isString(str)) {return str.toUppercase(); }throw Oops!;} 类似类型谓词签名这些断言签名也具有很强的表现力可以用这些表达一些相当复杂的逻辑function assertIsDefinedT(val: T): asserts val is NonNullableT {if (val undefined || val null) {throw new AssertionError(Expected val to be defined, but received ${val} ); }} 此外还有其它新特性与特性增强详情查看更新说明https://devblogs.microsoft.com/typescript/announcing-typescript-3-7 另外作为更新的一部分TypeScript 官网还有一个游乐场Playground可以体验所有新特性https://www.typescriptlang.org/play/index.html?#show-whatisnew推荐阅读
http://www.zqtcl.cn/news/584983/

相关文章:

  • 公司网站版面怎么设计湖南做网站 就问磐石网络专业
  • 描述网站开发的广告词黄页网络的推广
  • 打开官方网站广告平面设计好学吗
  • 建设银行观澜支行网站做网站公司汉狮网络
  • 荆州学校网站建设seo专业培训机构
  • 网站制作上网建站程序的价钱
  • 阿里巴巴网站建设规划24小时学会网站建设pdf
  • wordpress建站以后网络公司注册资金多少
  • wordpress下载站模板优秀网站开发公司
  • ppt模板免费下载完整版免费网站微网站开发商
  • 网站建设前的分析第一小节内容wordpress自带主题下载失败
  • 深圳微信网站设计网站建设设计制作外包
  • 做数模必逛的网站wordpress 培训 主题
  • 开发网站语言天元建设集团有限公司电话
  • 兼职做网站访问量和数据关于外贸公司的网站模板
  • 旅游网站设计与实现软件定制报价单
  • 上海专业网站建站公网站开发人员
  • 淄博网站建设公司有几家网络培训平台下载
  • 优秀网站展示仲恺做网站
  • 达州做淘宝网站制作3d动画的软件
  • 服务器主机搭建网站wordpress 隐私设置
  • 专业的网站制作公司wordpress 网页模板
  • 中国建设人才服务信息网是什么网站深圳居家办公最新通知
  • 中国建设银行网站招聘wordpress 文件下载插件
  • 福州企业建站程序莆田市的网站建设公司
  • 龙岩做网站推广龙华品牌网站建设
  • 如何用网站开发工具停止网页进程微信网站 教程
  • 高端网站网站设计网站建设怎么分析市场分析
  • 株洲网站设计外包运营wordpress seo插件教程
  • 做湘菜的网站wordpress外贸网站