有梦想,有干货,微信搜索【大千世界】关注这位凌晨还在洗碗的洗碗智者。本文已收录到GitHubhttps://github.com/qq449245884/xiaozhi,里面有完整的测试站点、资料和我的一线厂商访谈系列文章。今天给大家介绍一下TypeScript的一些比较新的功能和发展,这些都是我在日常工作中经常用到的功能。直接在构造函数中定义属性在Typescript中,可以直接通过构造函数的参数来定义属性。看一下早期的做法:classNote{publictitle:string;公共内容:字符串;私人历史:字符串[];构造函数(标题:字符串,内容:字符串,历史:字符串[]){this.title=title;this.content=内容;this.history=历史;}}使用ts中的简写语法:classNote{constructor(publictitle:string,publiccontent:string,privatehistory:string[]){//这里不用写this.title=title}}可能看不出来就像一个带有属性的类,但它确实如此,使用Typescript提供的速记形式——直接用构造函数的参数定义属性。这个简写语法做了很多事情:声明一个构造函数参数,它的类型声明一个同名的公共属性。当我们创建这个类的实例时,将属性初始化为对应的参数值。什么意思,就是Nul??lishCoalescing(空值合并)。听起来有点懵,直接上代码consti=undefinedconstk=i??5console.log(k)//5//3.9.2编译consti=undefined;constk=i!==null&&i!==void0?我:5;控制台日志(k);//5这时候你一定想说,到此结束吧?让k=我||5虽然也用这个,但是你不觉得很不严谨吗?如果我=0怎么办?私有类字段TypeScript3.8将支持ECMAScript私有字段,切勿将其与TypeScriptprivate修饰符混淆。这是一个在TypeScript中带有私有类字段的类:classAnimal{#name:string;构造函数(theName:字符串){this.#name=theName;}}在private关键字之上使用私有类字段的区别在于前者有更好的运行时保证。使用private关键字声明的TypeScript字段将成为编译后的JavaScript代码中的常规字段。另一方面,私有类字段在编译代码中保持私有。试图在运行时访问私有类字段将导致语法错误。我们也无法使用浏览器开发工具检查私有类字段。有了私有类字段,我们终于在JavaScript中拥有了真正的隐私。命名元组类型(Labeledtupletypes)命名元组类型适用于TypeScript4.0及以上版本,大大提升了我们的开发体验和效率。让我们看一个例子:typeAddress=[string,number]functionsetAddress(...args:Address){//somecodehereconsole.log(args)}当我们以这种方式定义函数输入参数时,在使用函数时,小编的智能提示只会提示我们输入参数类型,丢失了参数含义的说明。为了改进这一点,我们可以传递标记的元组类型,我们可以这样定义参数:args)}这样在调用函数的时候,我们的参数就得到了相应的语义,使得代码更容易维护。模板字面量类型从ES6开始,我们可以利用模板字面量(TemplateLiterals)的特性来编写带反引号的字符串,而不仅仅是单引号或双引号:constmessage=`text`;正如FlavioCopes所说,模板字面量提供了以前用引号写成的字符串所没有的特性:定义多行字符串非常方便,可以轻松地插入变量和表达式。language)模板字面量类型与JavaScript中的模板字符串语法完全相同,只是在类型定义中使用:typetopBottom="top"|“底部”类型leftRight=“left”|"right"typePosition=`${topBottom}-${leftRight}`当我们定义一个具体的字面量类型时,TypeScript会通过拼接内容的方式生成一个新的字符串字面量类型。实用程序类型TypeScript为您提供了一组实用程序类型,允许您在现有类型之上构建新类型。有许多适用于不同情况的实用程序类型,例如选择类型属性以复制、大写或使所有属性可选。下面是一个使用省略工具的示例,它复制了原始类型的所有属性,但我们选择不包含的属性除外。typeUser={name:stringage:numberlocation:string}typeMyUser=Omit
