Typescript入门

Typescript入门

https://www.youtube.com/watch?v=d56mG7DezGs

TypeScript 是 JavaScript 的超集 ,这意味着 TypeScript 包含了 JavaScript 的所有特性,并且还增加了一些额外的功能,如静态类型检查等

Statically-Typed(静态类型)
  • 定义:在静态类型的编程语言中,变量的数据类型是在编译期间确定和检查的。程序员需要显式地声明所有变量的数据类型,编译器会验证对变量进行的所有操作是否与其声明的类型相符.
  • 优点
    • 早期错误检测:能在编译阶段发现类型不匹配等错误,无需等到程序运行时,有助于提前避免程序在运行期间可能发生的一些错误,提高程序的稳定性和可靠性。
    • 增强代码可读性:变量的类型明确,使代码更易于理解,开发者能快速知晓变量的用途和预期的数据类型,有助于提高代码的可维护性,尤其是在大型项目中。
    • 编译器优化:编译器可基于已知的类型信息进行优化,生成更高效的机器码,从而提高程序的执行速度和性能,减少运行时的类型检查开销。
  • 缺点
    • 代码量增加:需要显式声明变量类型,会使代码相对更冗长,增加了程序员的编码工作量,尤其在处理复杂数据结构时,可能需要编写较多的类型声明代码。
    • 灵活性受限:变量一旦被声明为特定类型,就不能随意更改其类型,在某些需要动态改变数据类型的场景下不够灵活,可能需要额外的代码来处理类型转换。
  • 代表语言:C、C++、Java、C#、Go 等.
Dynamically-Typed(动态类型)
  • 定义:动态类型语言是在运行期间才去做数据类型检查的。编程时无需给变量指定数据类型,变量在第一次被赋值时,语言会在内部自动记录其数据类型.
  • 优点
    • 代码简洁灵活:无需事先声明变量类型,代码量相对较少,更专注于逻辑表达,使开发过程更加敏捷,能够快速实现程序的基本功能,尤其适合小型项目和快速原型开发。
    • 动态性强:变量的数据类型可以随时改变,在处理一些不确定类型的数据或需要动态改变数据类型的场景时更加方便,提供了更大的灵活性,有利于编写通用的、可复用的代码。
  • 缺点
    • 运行时错误风险:由于变量类型在运行时才确定,可能会出现类型不匹配的错误,且这些错误只有在程序运行到相关代码时才会暴露出来,增加了调试和排错的难度,也可能导致程序在运行时出现意外行为。
    • 性能开销:在运行时需要不断地进行类型检查和推断,会增加一定的计算开销,相比于静态类型语言,可能会导致程序的运行速度较慢,尤其是在处理大量数据或对性能要求较高的场景下。
  • 代表语言:Python、Ruby、JavaScript、PHP、Shell 等.
TypeScript(TS)的出现原因
1. 弥补JavaScript在大型项目开发中的不足
  • 缺乏强类型检查:JavaScript是动态类型语言,变量在运行时才能确定其数据类型,这虽带来了灵活性,但在大型项目中易导致难以察觉的类型错误,且这些错误通常在运行时才暴露,增加了调试成本。而TypeScript引入静态类型检查,可在编译阶段检测类型错误,开发者能提前发现并修正问题,从而提高代码质量和可维护性.
  • 弱面向对象设计:JavaScript的面向对象特性不够完善,没有像传统面向对象语言那样严格的类、接口等概念。TypeScript作为JavaScript的超集,增强了面向对象编程能力,引入了类、接口、继承、模块等特性,使代码结构更清晰,更易于组织和维护,适合大型项目的开发.
2.提升开发体验和效率
  • 强大的IDE支持:由于TypeScript在编写时就明确了类型信息,主流的IDE如Visual Studio Code、WebStorm等可据此提供更强大的智能提示、自动完成、代码重构和导航功能,让开发者能更快速地编写代码,减少错误,提高开发效率.
  • 类型推断机制:TypeScript的类型推断功能可根据变量的使用上下文自动推断其类型,无需开发者显式声明所有类型,使代码更简洁,同时保留了静态类型检查的优势,进一步提升开发效率.
3.适应不断发展的Web开发需求
  • 支持现代JavaScript特性和ECMAScript标准:TypeScript能够编译成不同版本的JavaScript,让开发者在使用最新语言特性的同时,确保代码在旧浏览器和环境中的兼容性,方便开发者及时采用新特性,无需担心兼容性问题.
  • 更好的代码组织和模块化:随着Web应用复杂度的增加,良好的代码组织和模块化至关重要。TypeScript支持ECMAScript模块和CommonJS等模块系统,还提供了命名空间等功能,使开发者能更好地管理和组织代码,实现代码的复用和隔离,提升项目的可维护性和扩展性.
4.社区和行业推动
  • 活跃的社区支持:TypeScript拥有庞大且活跃的社区,开发者们积极分享经验、贡献开源库和工具,为其发展提供了丰富的资源和强大的动力,也为初学者提供了学习和交流的平台,降低了学习成本和使用门槛.
  • 行业巨头的支持:微软作为TypeScript的主要推动者,投入了大量资源进行开发和维护,确保其不断更新和完善。此外,许多大型企业和团队在项目中广泛使用TypeScript,使其在行业内的认可度和影响力不断提高,进一步促进了它的普及和发展.

发展:

  • JS刚开始出现增强网页的交互性和动态性,只能在浏览器的环境中运行
  • Nodejs的出现使得js可能不用必须在浏览器上运行,作为js的运行环境,使得js也能在服务端运行
  • 为了解决js的动态类型的特性导致开发过程中的错误,微软开始开发TS以解决这个问题
相关推荐
WeiXiao_Hyy12 分钟前
成为 Top 1% 的工程师
java·开发语言·javascript·经验分享·后端
吃杠碰小鸡29 分钟前
高中数学-数列-导数证明
前端·数学·算法
kingwebo'sZone35 分钟前
C#使用Aspose.Words把 word转成图片
前端·c#·word
xjt_09011 小时前
基于 Vue 3 构建企业级 Web Components 组件库
前端·javascript·vue.js
我是伪码农1 小时前
Vue 2.3
前端·javascript·vue.js
夜郎king2 小时前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳2 小时前
JavaScript 的宏任务和微任务
javascript
夏幻灵3 小时前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星3 小时前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_3 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js