我在工作中经常用到的6个TypeScript新特性

class Note {

public title: string;

public content: string;

private history: string[];

constructor(title: string, content: string, history: string[]) {

this.title = title;

this.content = content;

this.history = history;

}

}

采用 ts 中简写的语法:

class Note {

constructor(

public title: string,

public content: string,

private history: string[]

){

// 这里不用在写 this.title = title

}

}

它可能看上去不像是有属性的类,但它确实有,利用的是 Typescript 提供的简写形式 — 用构造函数的参数直接定义属性。

这个简写语法做了很多:

  • 声明了一个构造函数参数及其类型

  • 声明了一个同名的公共属性

  • 当我们 new 出该类的一个实例时,把该属性初始化为相应的参数值

空值合并

??其实没啥意思,就是Nullish Coalescing (空值合并)。听起来有点懵,我们直接上代码

const i = undefined

const k = i ?? 5

console.log(k) // 5

// 3.9.2编译

const i = undefined;

const k = i !== null && i !== void 0 ? i : 5;

console.log(k); // 5

这个时候你肯定是想说了这样不就完了吗?

let k = i || 5

虽然这样也用,但是你不觉得很不严谨吗? 如果i = 0呢?

私有类字段

TypeScript 3.8 将支持 ECMAScript 私有字段,千万别和 TypeScript private 修饰符 混淆。

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

class Animal {

#name: string;

constructor(theName: string) {

this.#name = theName;

}

}

private关键字之上使用私有类字段的区别在于前者有更好的运行时保证。用private关键字声明的 TypeScript 字段将在编译后的JavaScript代码中成为常规字段。另一方面,私有类字段在编译后的代码中仍然是私有的。

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

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

命名元组类型(Labeled tuple types)

命名元组类型适需要 TypeScript 4.0及以上版本才能使用,它极大的改善了我们的开发体验及效率,先来看一个例子:

type Address = [string, number]

function setAddress(…args: Address) {

// some code here

console.log(args)

}

当我们这样定义函数入参后,在使用函数时,编辑器的智能提示只会提示我们参数类型,丢失了对参数含义的描述。

01.png

为了改善这一点,我们可以通过 Labeled tuple types,我们可以这样定义参数:

type Address = [streetName: string, streetNumber: number]

function setAddress(…args: Address) {

// some code here

console.log(args)

}

02.png

这样,在调用函数时,我们的参数就获得了相应的语义,这使得代码更加容易维护。

模板字面量类型

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!

资料领取方式:点击这里前往免费获取

件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

[外链图片转存中…(img-vnGiwkxv-1713807532799)]

最后

正值金三银四招聘旺季,很多小伙伴都询问我有没有前端方面的面试题,特地整理出来赠送给大家!

资料领取方式:点击这里前往免费获取

前端资料图.PNG

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值