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

TS系列(1):TS是什么?如何使用?

你好,我是沐爸,欢迎点赞、收藏、评论和关注。

TypeScript(TS)增强了 JavaScript 的静态类型检查能力,提高了代码的可维护性和可读性。通过类型定义,TS帮助开发者在编写阶段发现并修正错误,促进了大型项目中的团队协作和代码质量,在前端开发中的具有重要意义。

一、TS是什么?

  • TypeScript 由微软开发,是基于 JavaScript 的一个扩展语言
  • TypeScript 包含 JavaScript 的所有内容,是 JavaScript 的超集
  • TypeScript 增加了静态类型检查、接口、泛型等很多现代开发特性,因此更适合大型项目的开发。
  • TypeScript 需要编译为 JavaScript,然后交给浏览器或其他 JavaScript 运行环境执行。
  • TypeScript 支持任意浏览器,任意环境,任意系统并且是开源的。

二、为什么需要TS?

今非昔比的 JavaScript(了解)

  • JavaScript 当年诞生时的定位是浏览器脚本语言,用于在网页中嵌入一些简单的逻辑,而且代码量很少。
  • 随着时间的推移,JavaScript 变得越来越流行,如今的 JavaScript 已经全栈编程了。
  • 现如今的 JavaScript 应用场景比当年丰富的多,代码量也比当年很多,随便一个 JavaScript 项目的代码量,可以轻松达到几万行,甚至几十万行!
  • 然而 JavaScript 当年 "出生简陋",没考虑到如今的应用场景和代码量,逐渐的就出现了很多困扰

JavaScript 中的困扰

1.不清不楚的数据类型

let welcome = 'hello'
welcome() // TypeError: welcome is not a function

2.有漏洞的逻辑

const str = Date.now() % 2 ? '奇数' : '偶数'if (str !== '奇数') {console.log('hello')
} else if (str === '偶数') {console.log('world') // 这里永远不会执行,但不会报错
}

3.访问不存在的属性

const obj = {width: 20,height: 10
}const area = obj.width * obj.heigth // 这里并不会报错console.log(area) // NaN

4.低级的拼写错误

const message = 'hello,world'
message.toUperCase() // 拼写错误但不会提示

【静态类型检查】

  • 在代码运行前进行检查,发现代码的错误或不合理之处,减少运行时异常的出现几率,此种检查叫【静态类型检查】,TypeScript 核心就是【静态类型检查】,简言之就是把运行时的错误前置
  • 同样的功能,TypeScript 的代码量要大于 JavaScript,但由于 TypeScript 的代码结构更加清晰,在后期代码的维护中 TypeScript 却远胜于 JavaScript。

三、编译TS

浏览器不能直接运行 TypeScript 代码,需要编译为 JavaScript 再交给浏览器解析器执行。

1.命令行编译

要把 .ts 文件编译为 .js 文件,需要配置 TypeScript 的编译环境,步骤如下:

  • 第一步:创建一个 demo.ts 文件,例如:
const person = {name: '小明',age: 6
}
console.log(`我叫${person.name},我今年${person.age}岁了`)
  • 第二步:全局安装 TypeScript
npm i typescript -g# 查看版本号
tsc -v
  • 第三步:使用命令编译 .ts 文件
tsc demo.ts# 依次编译多个.ts文件
tsc demo.ts demo2.ts demo3.ts
  • 执行编译命令后,会生成一个 demo.js 文件
var person = {name: '小明',age: 6
};
console.log("\u6211\u53EB".concat(person.name, "\uFF0C\u6211\u4ECA\u5E74").concat(person.age, "\u5C81\u4E86"));

如果 tsc 命令不能被识别,管理员权限打开 PowerShell 输入:set-ExecutionPolicy RemoteSigned 按回车。

2.自动化编译

  • 第一步:创建 TypeScript 编译控制文件
tsc --init
  1. 工程中会生成一个 tsconfig.json 配置文件,其中包含很多编译时的配置。
  2. 观察发现,默认编译的 JS 版本是 ES7,我们可以手动调整为其他版本。
  • 第二步:监视目录中的 .ts 文件变化
tsc --watch

第三步:小优化,当编译出错时不生成 .js 文件(默认情况下出错也会生成 .js 文件)

tsc --noEmitOnError --watch

备注:也可以修改 tsconfig.json 中的 noEmitOnError 配置

3.不编译运行

如果在 Node 环境,可以直接运行.ts 文件吗?答案是可以的。不过需要全局安装 ts-node,然后就可以直接用 node 运行 .ts文件了。

npm i -g ts-nodets-node demo.ts

注意:

相同文件夹下的不同 .ts 文件不能有同名变量,则会提示重复声明变量:

let age: number
// Cannot redeclare block-scoped variable 'age'

其实问题出在了变量命名空间,如果不把文件当作模块使用的话 TypeScript 会认为所有文件里的代码都是在同一个作用域里的,所以即使在不同文件也不能声明同名变量。

好了,分享结束,谢谢点赞,下期再见。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基础容器.
  • Elasticsearch:检索增强生成背后的重要思想
  • Facebook对现代社交互动的影响
  • 【30天玩转python】高级面向对象编程
  • 哈希——字符串哈希
  • Postman 发送 JSON 格式数据
  • 【速成Redis】04 Redis 概念扫盲:事务、持久化、主从复制、哨兵模式
  • Kubernetes 深入浅出系列 | 容器剖析之容器基本实现原理
  • 力扣每日一题 字符串中最多数目的子序列 贪心 字符串 前缀和
  • Leetcode 1039. 多边形三角形剖分的最低得分 枚举型区间dp C++实现
  • YOLOv8——测量高速公路上汽车的速度
  • 【IDEA】将光标移动到您上一次编辑的地方
  • 物联网迎来下半场,国产 IoTOS 打造企业级智能硬件云服务平台
  • vue 引入 esri-loader 并加载地图
  • Ubuntu磁盘不足扩容
  • 【译】JS基础算法脚本:字符串结尾
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Angular 2 DI - IoC DI - 1
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Java新版本的开发已正式进入轨道,版本号18.3
  • MYSQL 的 IF 函数
  • Redash本地开发环境搭建
  • Vim Clutch | 面向脚踏板编程……
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 基于 Babel 的 npm 包最小化设置
  • 计算机常识 - 收藏集 - 掘金
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何利用MongoDB打造TOP榜小程序
  • 微服务入门【系列视频课程】
  • 移动端唤起键盘时取消position:fixed定位
  • 找一份好的前端工作,起点很重要
  • scrapy中间件源码分析及常用中间件大全
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​水经微图Web1.5.0版即将上线
  • # centos7下FFmpeg环境部署记录
  • #HarmonyOS:Web组件的使用
  • #QT项目实战(天气预报)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (LeetCode 49)Anagrams
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (独孤九剑)--文件系统
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (论文阅读11/100)Fast R-CNN
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (排序详解之 堆排序)
  • (十三)Flink SQL
  • (算法二)滑动窗口
  • (转)Windows2003安全设置/维护
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .CSS-hover 的解释
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。