未定义(这)是什么意思
admin
2023-08-28 17:24:38

今天我就介绍一下日常工作中经常用到的TypeScript的一些新功能和进展。

在构造函数中直接定义属性

Typescript中,可以通过构造函数的参数直接定义属性。让我们先看看早期的实践:

class note { public title : string;publiccontent:stringprivate history : string[];构造函数(title:string,content:string,history : string[]){ this . title=title;this.content=内容;this.history=history}}在ts中使用速记语法:

class note { constructor(public title : string,public content 3360string,private history : string[]){//不需要写这个. title=title}}它看起来可能不像一个有属性的类,但它确实是,使用了Typescript提供的速记形式——直接用构造函数的参数定义属性。

这个速记语法做了很多:

声明一个构造函数参数,其类型声明一个同名的公共属性。当我们创建这个类的实例时,将属性初始化为对应的参数值

空值合并

。实际上,这没有任何意义,只是无效合并。听起来有点蠢,直接说代码吧。

consti=undefinedconstk=i?5console.log(k)//5//3.9.2编译consti=undefinedconstk=i!==nulli!==void0?i:5console . log(k);//5这个时候,你一定想说出来。还没结束吗?

Letk=i||5虽然也用这个,但是你不觉得很松懈吗?如果i=0呢?

私有类字段

TypeScript3.8将支持ECMAScript私有字段,所以不要将其与TypeScriptprivate修饰符混淆。

这是一个在TypeScript中具有私有类字段的类:

classAnimal { # name:string构造函数(theName:string){this。# name=theName}}在private关键字上面使用私有类字段的区别在于前者有更好的运行时保证。用private关键字声明的TypeScript字段将成为编译后的JavaScript代码中的常规字段。另一方面,私有类字段在编译后的代码中仍然是私有的。

试图在运行时访问私有类字段将导致语法错误。我们也不能用浏览器开发工具检查私有类字段。

有了私有类字段,我们终于在JavaScript中获得了真正的隐私。

命名元组类型(Labeledtupletypes)

命名元组类型只能配合TypeScript4.0以上版本使用,大大提高了我们的开发体验和效率。我们先来看一个例子:

Typeaddress=[string,number] functionsetaddress(.args : address){//somecodehereconsole . log(args)}当我们这样定义函数参数时,在使用函数时,编辑器的智能提示只会提示我们参数类型,而失去了参数含义的描述。

为了改善这一点,我们可以使用Labeledtupletypes,我们可以这样定义参数:

type address=[街道名称: string,街道编号: number] functionsetaddress(.args : address){//somecodeereconsole . log(args)}这样,在调用函数时,我们的参数得到相应的语义,使得代码更容易维护。

模板字面量类型

从ES6开始,我们可以使用TemplateLiterals的特性在反引号中编写字符串,而不仅仅是单引号或双引号:

constmessage=`text正如FlavioCopes所说,模板文字提供了以前引用的字符串所没有的特性:

定义多行字符串非常方便。变量和表达式很容易插值。您可以使用模板标记创建DSL(DomainSpecificLanguage)模板。模板的文字类型与JavaScript中的模板字符串语法完全相同,但它们在类型定义中使用:

typettopbottom=' top ' | ' bottom ' typeleftright=' left ' | ' right ' type position=` { top bottom }-{ left right } `当我们定义一个特定的文字类型时,TypeScript将通过拼接内容生成一个新的字符串文字类型。

实用类型

TypeScript为您提供了一组实用的类型,允许您在现有类型的基础上构建新的类型。有许多涵盖不同情况的实用类型,例如选择要复制的类型属性、大写字母或使所有属性可选。

下面是一个使用省略工具的例子,它复制原始类型的所有属性,除了那些我们选择不包含的属性。

type user={ name : string age : number location : string } type my user=omit user,' name '以上是我工作中经常用到的一些东西,其他的以后再分享。就这样?

~之后我在刷碗,我要和鸡吵架了。下次再见。

相关内容

热门资讯

金花创建房间/微信金花房卡怎么... 1.微信渠道:(荣耀联盟)大厅介绍:咨询房/卡添加微信:88355042 2.微信游戏中心:打开微...
金花房间卡/金花房卡如何购买/... 金花房间卡/金花房卡如何购买/新超圣金花房卡正版如何购买新超圣是一款非常受欢迎的游戏,咨询房/卡添加...
牛牛创建房间/金花房卡批发/神... 微信游戏中心:神牛大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...
链接牛牛/牛牛房卡游戏代理/鸿... 鸿运大厅房卡更多详情添加微:33549083、 2、在商城页面中选择房卡选项。 3、根...
科技实测!牛牛房卡怎么获得/乐... 微信游戏中心:乐酷大厅房卡在哪里买打开微信,添加客服【88355042】,进入游戏中心或相关小程序,...