当前位置:网站首页>【TypeScript】为什么要选择 TypeScript?
【TypeScript】为什么要选择 TypeScript?
2022-08-03 10:51:00 【吉帅振的网络日志】
自我介绍:大家好,我是吉帅振的网络日志(其他平台账号名字相同),互联网前端开发工程师,工作5年,去过上海和北京,经历创业公司,加入过阿里本地生活团队,现在郑州北游教育从事编程培训。
一、前言
TypeScript 与 JavaScript 本质并无区别,你可以将 TypeScipt 理解为是一个添加了类型注解的 JavaScript,比如 const num = 1,它同时符合 TypeScript 和 JavaScript 的语法。此外,TypeScript 是一门中间语言,最终它还需要转译为纯 JavaScript,再交给各种终端解释、执行。不过,TypeScript 并不会破坏 JavaScript 既有的知识体系,因为它并未创造迥异于 JavaScript 的新语法,依旧是“熟悉的配方”“熟悉的味道”。
二、TypeScript 更加可靠
在业务应用中引入 TypeScript 后,当我们收到 Sentry(一款开源的前端错误监控系统)告警,关于“‘undefined’ is not a function”“Cannot read property ‘xx’ of null|undefined” 之类的低级错误统计信息基本没有。而这正得益于 TypeScript 的静态类型检测,让至少 10% 的 JavaScript 错误(主要是一些低级错误)能在开发阶段就被发现并解决。在所有操作符之前,TypeScript 都能检测到接收的类型(在代码运行时,操作符接收的是实际数据;静态检测时,操作符接收的则是类型)是否被当前操作符所支持。
当 TypeScript 类型检测能力覆盖到整个文件、整个项目代码后,任意破坏约定的改动都能被自动检测出来(即便跨越多个文件、很多次传递),并提出类型错误。因此,你可以放心地修改、重构业务逻辑,而不用过分担忧因为考虑不周而犯下低级错误。
接手复杂的大型应用时,TypeScript 能让应用易于维护、迭代,且稳定可靠,也会让你更有安全感。
三、 面向接口编程
编写 TypeScript 类型注解,本质就是接口设计。使用 TypeScript 设计的一个展示用户信息 React 组件示例,从中我们一眼就能了解组件接收数据的结构和类型,并清楚地知道如何在组件内部编写安全稳定的 JSX 代码。
interface IUserInfo {
/** 用户 id */
id: number;
/** 用户名 */
name: string;
/** 头像 */
avatar?: string;
}
function UserInfo(props: IUserInfo) {
...
}
TypeScript 极大可能改变你的思维方式,从而逐渐养成一个好习惯。比如,编写具体的逻辑之前,我们需要设计好数据结构、编写类型注解,并按照这接口约定实现业务逻辑。这显然可以减少不必要的代码重构,从而大大提升编码效率。同时,你会更明白接口约定的重要性,也会约束自己/他人设计接口、编写注解、遵守约定,乐此不疲。
四、TypeScript 正成为主流
相比竞争对手 Facebook 的 Flow 而言,TypeScript 更具备类型编程的优势,而且还有 Microsoft、Google 这两家国际大厂做背书。另外,越来越多的主流框架(例如 React、Vue 3、Angular、Deno、Nest.js 等)要么选用 TypeScript 编写源码,要么为 TypeScript 提供了完美的支持。随着 TypeScript 的普及,TypeScript 在国内(国内滞后国外)成了一个主流的技术方向,国内各大互联网公司和中小型团队都开始尝试使用 TypeScript 开发项目,且越来越多的人正在学习和使用它。
五、总结
熟练掌握 TypeScript ,轻松拿下大厂 Offer。
边栏推荐
猜你喜欢
Advanced use of MySQL database
创建C UDR时,指定的HANDLESNULLS的作用是什么?
Basic using MySQL database
synchronized
Classical Architecture and Memory Classification of Embedded Software Components
怎么在外头使用容器里php命令
【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
This article understands the process from RS485 sensor to IoT gateway to cloud platform
STM32+OLED显示屏制作指针式电子钟
随机推荐
Mysql OCP 75题
Matplotlib
Machine Learning Overview
type=“module“ 你了解,但 type=“importmap“ 你知道吗
三大产品力赋能欧萌达OMODA5
HCIP第十七天笔记
ARIMA实现(亲测可用)
What is the relationship between The Matrix and 6G?
509. 斐波那契数
CADEditorX ActiveX 14.1.X
【冒泡排序以及奇数偶数排列】
成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
程序员架构修炼之道:如何设计出可持续演进的系统架构?
4G采集ModbusTCP转JSON接MQTT云平台
深度学习100例——卷积神经网络(CNN)实现服装图像分类
创建C UDR时,指定的HANDLESNULLS的作用是什么?
Analysis of the idea of the complete knapsack problem
聊天app开发——防炸麦以及节省成本的内容鉴定方法
试题G:单词分析 ← 第十一届蓝桥杯大赛第二场省赛赛题
关于OPENSSL的问题