当前位置: 首页 > news >正文

阮一峰《TypeScript 教程》学习笔记——简介

1. 一段话总结

TypeScript(简称TS) 是微软2012年推出的 JavaScript(简称JS)超集,核心是为JS新增静态类型系统,并非创造新语言,目的是增强JS功能以适配多人合作的企业级项目;它能在开发阶段通过类型约束实现静态分析、提前发现错误,还能提升IDE支持与代码重构效率,但也存在丧失动态灵活性、增加开发工作量等缺点;学习TS需先掌握JS基础,其发展历经多个关键版本(如2014年1.0、2023年5.0),设计者为Anders Hejlsberg。


2. 思维导图

在这里插入图片描述


3. 详细总结

一、TypeScript语言简介

  1. 核心定义
    TypeScript(简称TS)是微软开发的编程语言,基于JavaScript(简称JS)构建,并非创造全新语言,而是JS的超集——继承JS全部语法(所有JS脚本可直接作为TS脚本,可能触发类型报错),核心新增功能是独立的静态类型系统
  2. 设计目的
    解决JS在多人合作企业级项目中的局限性,通过类型约束提升代码质量、减少错误,适配大型项目开发需求。

二、类型的概念

  1. 类型定义
    类型(type)是一组具有相同特征的值的集合,例如123456因可进行数值运算,同属“数值(number)类型”。
  2. 类型作用
    本质是人为添加的编程约束与用法提示
    • 对编译器/开发工具:提供验证依据,提前识别错误;
    • 对开发者:明确值的可用运算、变量的合法赋值,降低使用成本。
  3. 代码示例
    function addOne(n:number) { // 约束参数n为number类型return n + 1;
    }
    addOne('hello'); // 报错:需传入number,不可传string
    
    对比JS:JS无类型检查,此错误仅在运行阶段暴露,TS在开发阶段即可发现。

三、动态类型与静态类型对比

对比维度动态类型(JavaScript)静态类型(TypeScript)
类型确定性变量类型无法提前确定,随赋值动态变化变量类型开发阶段即确定(或推断),后续不可变更
变量类型可变性支持跨类型赋值(如let x=1; x='hello'合法)禁止跨类型赋值(如let x=1; x='hello'报错)
对象属性可变性支持随意增删属性(如delete y.fooy.bar=2禁止随意增删属性(如delete y.fooy.bar=2报错)
错误检测阶段仅在代码运行阶段发现类型相关错误在开发阶段(编译/静态检查时)发现类型相关错误

四、静态类型的优缺点

类别具体要点说明
优点1. 支持代码静态分析无需运行代码,即可确定变量类型、推断错误,降低大型项目线上风险
2. 提前发现多种错误可识别拼写错误(如obj.messege)、无意义运算(如0+true)、方法调用错误(如字符串调用find()
3. 增强IDE支持提供语法提示(函数参数/用法)、自动补全,提升开发效率
4. 替代部分代码文档类型信息可直接说明代码用法,开发者通过类型即可推断功能,工具可自动生成文档
5. 降低代码重构成本只要函数/对象的参数、返回值类型不变,重构后基本可保证正常运行,适配大型项目多人协作
缺点1. 丧失动态类型灵活性剥夺JS的自由编程特性,限制跨类型操作等灵活用法
2. 增加开发工作量需额外编写类型声明,确保类型正确,可能延长项目开发周期
3. 提高学习成本类型系统复杂,需额外学习TS专属语法与规则
4. 引入额外编译步骤TS代码无法直接运行,需先编译为JS,增加部署流程
5. 存在兼容性问题依赖JS生态,但大量旧JS项目未适配TS,需手动处理适配问题

五、TypeScript的发展历史

时间关键事件
2012年微软宣布推出TypeScript,设计者为Anders Hejlsberg(C#、.Net设计者);最初目的是让JS程序员参与Windows 8应用开发,减少.Net程序员学习成本
2013年Visual Studio 2013开始内置TypeScript支持
2014年1.0版本发布;代码仓库从微软迁移至GitHub
2016年2.0版本发布,引入多项重大语法功能
2018年3.0版本发布
2020年4.0版本发布
2023年5.0版本发布
开源属性核心编译器采用Apache 2.0许可证,开源且接受社区参与

六、如何学习TypeScript

  1. 前置基础
    必须先掌握JavaScript语法,因TS仅新增类型系统,实际功能仍由JS引擎执行。
  2. 推荐前置教程
    若不熟悉JS,建议先阅读《JavaScript教程》和《ES6教程》。
  3. 学习重点
    本书(原文提及的教程)默认读者掌握JS,仅讲解TS新增语法,核心是类型系统

4. 关键问题

问题1:TypeScript与JavaScript的核心关系是什么?TS的核心设计目标是什么?

答案

  • 核心关系:TS是JS的超集,继承JS全部语法(所有JS脚本可作为TS脚本,可能因类型不匹配报错),仅在JS基础上新增独立的静态类型系统,并非独立于JS的全新语言。
  • 核心设计目标:解决JS在多人合作的企业级项目中的局限性,通过静态类型约束提升代码质量、提前发现错误,让JS更适配大型项目开发需求。

问题2:相比JavaScript的动态类型,TypeScript的静态类型能解决哪些核心问题?请举例说明。

答案
TS静态类型主要解决JS动态类型“错误发现晚、约束弱”的核心问题,具体包括:

  1. 提前发现错误:JS动态类型仅在运行阶段暴露类型相关错误,TS在开发阶段即可发现。例如:
    • 拼写错误:JS中let obj={message:''}; console.log(obj.messege)不报错,TS会提示“未定义messege属性”;
    • 无意义运算:JS中0+true合法,TS会报错“+运算符不能用于number与boolean”。
  2. 固定变量/对象约束:JS允许变量跨类型赋值(如let x=1; x='hello')、对象随意增删属性,TS禁止此类操作,避免代码逻辑混乱。
  3. 降低重构风险:JS重构时难以确认修改是否影响其他代码,TS中只要函数/对象的参数、返回值类型不变,重构后基本可保证正常运行,适配大型项目协作。

问题3:结合静态类型的优缺点,TypeScript更适合什么场景?不适合什么场景?原因是什么?

答案

  • 适合场景大型、多人合作的企业级项目
    原因:静态类型的优点(静态分析、提前报错、IDE支持、助力重构)能最大化发挥价值——降低大型项目的线上风险、提升团队协作效率、减少维护成本,契合企业级项目对稳定性和可维护性的需求。

  • 不适合场景小型、短期的个人项目
    原因:静态类型的缺点(丧失灵活性、增加开发工作量、需额外编译步骤)会抵消其优势——个人项目需求灵活、开发周期短,TS的类型声明会增加不必要的工作量,且无需应对多人协作的复杂度,JS的动态灵活性更适配。

http://www.dtcms.com/a/482842.html

相关文章:

  • Scope作用域
  • 网页设计网站名字上海企业电话查询
  • 论文阅读-IDFUZZ: Intelligent Directed Grey-box Fuzzing
  • [论文阅读]Progent: Programmable Privilege Control for LLM Agents
  • 内蒙古建设厅官网站自建本地网站服务器wordpress
  • 【愚公系列】《人工智能70年》078-AI塑造新人生(教育史上的“一场数字海啸“)
  • 数据分析-基础-二项分布
  • idea正则匹配搜索
  • Lombok @Data 注解在 Spring Boot 项目中的深度应用与实践指南
  • 电力电子技术 第一章——电力电子变换器
  • Spring Boot 项目启动报错:`Could not resolve type id ... no such class found` 终极解决方案!
  • 八方资源网做网站优化怎么样网络营销的主要传播渠道是
  • 基于python写的PDF表格提取到excel文档
  • 做贷款网站犯法吗wordpress 静态文件大
  • AWS CloudTrail:让每一次操作都“有迹可循”
  • 运动控制教学——5分钟了解雅可比矩阵!
  • BERT 中文外卖评价情感分析项目
  • [MySQL] 数据库的约束与设计
  • 用dw做的网页如何上传到网站wordpress安装后要删除哪些文件夹
  • dedecms 广告管理 js 网站变慢网站建设自查自评
  • 京东也要造车了
  • 株洲做网站三明注册公司
  • 网站开发 重庆南宁企业做网站
  • 减少Token措施
  • vue2实现地图的位图模式(图片处理),支持移动缩放鹰眼和打点等
  • 营销导向的企业网站优化建站图标素材
  • 网站建设流程教案小红书官方推广
  • 返利网站开发计划书小店怎么做网站
  • COM(Component Object Model) 中两种对象组装方式通俗易懂的理解
  • Git 10 ,使用 SSH 提升 Git 操作速度实践指南( Git 拉取推送响应慢 )