前言:接下来暂停Flutter更新,开始更新TypeScript教程前端
更新地点: 首发于公众号,次日更新于掘金、简书等地方;vue
更多交流: 能够添加个人微信 372623326,关注个人微博:coderwhywebpack
但愿你们能够 帮忙转发,点击在看,给我更多的创做动力。程序员
前言二:当你点开这篇文章时,我相信你已经在不少地方都已经据说过或者见过TypeScript了。web
可是可能对TypeScript依然有不少问号:TypeScript究竟是什么?为何每一个人都在说TypeScript怎么怎么好,到底好在哪里?Angular、Vue3接连使用TypeScript进行了重构是否意味着咱们必须掌握TypeScript,它们又为何要选择TypeScript?我须要什么样的基础才能学会或者说学好TypeScript呢?算法
没有关系,在这个章节中咱们就来解答上面的疑惑,而且我但愿你们学完这个章节能够对一个概念有深刻的理解,就是 类型思惟。编程
不着急,下面就让咱们和TypeScript有一场美丽的邂逅~小程序
我始终坚信:任何新技术的出现都是为了解决以前某个技术的痛点。数组
JavaScript是一门优秀的编程语言吗?浏览器
著名的Atwood定律:
优秀的JavaScript没有缺点吗?
JavaScript正在慢慢变好
首先你须要知道,编程开发中咱们有一个共识:错误出现的越早越好
如今咱们想探究的就是如何在 代码编译期间 发现代码的错误:
function getLength(str) {
return str.length;
}
console.log("1.正在的代码执行");
console.log("2.开始函数");
getLength("abc"); // 正确的调用
getLength(); // 错误的调用(IDE并不会报错)
// 当上面的代码报错后, 后续全部的代码都没法继续正常执行了
console.log("3.调用结束");
复制代码
在浏览器下的运行结果以下:
这是咱们一个很是常见的错误:
Uncaught TypeError: Cannot read property 'length' of undefined
复制代码
固然,你可能会想:我怎么可能犯这样低级的错误呢?
可是,若是咱们能够给JavaScript加上不少限制,在开发中就能够很好的避免这样的问题了:
咱们已经简单体会到没有类型检查带来的一些问题,JavaScript由于从设计之初就没有考虑类型的约束问题,因此形成了前端开发人员关于类型思惟的缺失:
因此咱们常常会说JavaScript不适合开发大型项目,由于当项目一旦庞大起来,这种宽松的类型约束会带来很是多的安全隐患,多人员开发它们之间也没有良好的类型契约。
好比当咱们去实现一个核心类库时,若是没有类型约束,那么须要对别人传入的参数进行各类验证来保证咱们代码的健壮性;
好比咱们去调用别人的函数,对方没有对函数进行任何的注释,咱们只能去看里面的逻辑来理解这个函数须要传入什么参数,返回值是什么类型。
为了弥补JavaScript类型约束上的缺陷,增长类型约束,不少公司推出了本身的方案:
而如今,无疑TypeScript已经彻底胜出:
学习TypeScript不只仅能够为咱们的代码增长类型约束,并且能够培养咱们前端程序员具有类型思惟。
下面就让咱们今天的主角TypeScript隆重登场吧!
虽然咱们已经知道TypeScript是干什么的了,也知道它解决了什么样的问题,可是咱们仍是须要全面的来认识一下TypeScript究竟是什么?
咱们来看一下TypeScript在GitHub和官方上对本身的定义:
GitHub说法:TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
TypeScript官网:TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
翻译一下:TypeScript是拥有类型的JavaScript超集,它能够编译成普通、干净、完整的JavaScript代码。
复制代码
怎么理解上面的话呢?
因此,咱们能够把TypeScript理解成一身神装的JavaScript,不只让JavaScript更加安全,并且给它带来了诸多好用的装备特效;
官方对TypeScript有几段特色的描述,我以为很是到位(虽然有些官方,了解一下),咱们一块儿来分享一下:
始于JavaScript,归于JavaScript
TypeScript从今天数以百万计的JavaScript开发者所熟悉的语法和语义开始。使用现有的JavaScript代码,包括流行的JavaScript库,并从JavaScript代码中调用TypeScript代码。
TypeScript能够编译出纯净、 简洁的JavaScript代码,而且能够运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中。
TypeScript是一个强大的工具,用于构建大型项目
类型容许JavaScript开发者在开发JavaScript应用程序时使用高效的开发工具和经常使用操做好比静态检查和代码重构。
类型是可选的,类型推断让一些类型的注释使你的代码的静态验证有很大的不一样。类型让你定义软件组件之间的接口和洞察现有JavaScript库的行为。
拥有先进的 JavaScript
TypeScript提供最新的和不断发展的JavaScript特性,包括那些来自2015年的ECMAScript和将来的提案中的特性,好比异步功能和Decorators,以帮助创建健壮的组件。
这些特性为高可信应用程序开发时是可用的,可是会被编译成简洁的ECMAScript3(或更新版本)的JavaScript。
正是由于有这些特性,TypeScript目前已经在不少地方被应用:
原本想在这个位置放上一个体验TypeScript的程序,可是涉及到过多TypeScript的安装流程和vscode的配置信息。
因此,我打算在下一篇中专门讲解这部分的内容,包括使用webpack搭建一个能够自动测试TypeScript代码的环境。
So,稍安勿躁,这一个章节咱们就和TypeScript有一个简单的邂逅就好,后面再进行深刻了解。
在以前的Flutter文章中,我说到一个话题,大前端是一群最能或者说最须要折腾的开发者:
客户端开发者
:从Android到iOS,或者从iOS到Android,到RN,甚至如今愈来愈多的客户端开发者接触前端相关知识(Vue、React、Angular、小程序);前端开发者
:从jQuery到AngularJS,到三大框架并行:Vue、React、Angular,还有小程序,甚至如今也要接触客户端开发(好比RN、Flutter);大前端开发就是,不像服务器同样可能几年甚至几十年仍是那一套的东西。前端新技术会层出不穷。
可是每同样技术的出现都会让惊喜,由于他必然是解决了以前技术的某一个痛点的,而TypeScript真是解决了JavaScript存在的不少设计缺陷,尤为是关于类型检测的。
而且从开发者长远的角度来看,学习TypeScript有助于咱们前端程序员培养 类型思惟,这种思惟方式对于完成大型项目尤其重要。
我也会更新一个TypeScript的系列文章,带着你们一块儿来学习TypeScript,而且培养你们能够造成类型思惟。
回到咱们开篇提出的一些疑惑:
TypeScript究竟是什么?为何每一个人都在说TypeScript怎么怎么好,到底好在哪里?Angular、Vue3接连使用TypeScript进行了重构是否意味着咱们必须掌握TypeScript,它们又为何要选择TypeScript?我须要什么样的基础才能学会或者说学好TypeScript呢?
咱们相信上面的问题大部分你都已经有了答案。
咱们来回答一下学习这个系列文章你须要掌握什么?
从下一篇开始,就让咱们把TypeScript环境搭建好,开始正式学习它吧!
备注:全部内容首发于公众号,以后除了Flutter也会更新其余技术文章,TypeScript、React、Node、数据结构与算法等等,也会更新一些本身的学习心得等,欢迎你们关注