这篇博客是了解ts然后快速入门,可以在项目中使用,就是简单的了解什么是ts以及直接项目开发的时候怎么去使用。
先来看张图。
这张图很好的解释了ts是什么?相当于js的超集,也就是包含了js,而且在基础上增加了很多现代的开发特效,不过单纯的看这些其实并不是我现在最需要的,就是为什么要用ts,我现在希望的是描述出来ts怎么用,以及真正的去用ts写代码。
1.ts的核心
当我们在用js写代码的时候,
图中的情况我们写代码的时候js不会报错提醒,但是运行的时候我们就会发现控制台的报错。而ts的核心就是解决这些问题。
ts的核心静态类型检查,在代码运行前进行检查发现代码错误或者不合理的地方,减小运行时异常的出现概率,简而言之就是运行时的错误前置。同样的功能ts代码大于js,但是ts结构更清晰代码维护远胜于js,所以大型项目需要用ts。
2.ts的使用
安装ts---npm install typescript -g 全局安装ts包,这时候我们只需要在文件后缀名加上ts就可以了。浏览器不认识ts,需要转化为js。
我们用两种方式
1.命令行编译
tsc index.ts就可以把index.ts这个文件转化为index.js文件
2.自动化编译
首先输入tsc --init 生成tsconfig.json生成ts配置文件 里面规定ts如何转化为js,然后我们就可以输入tsx --watch开启监听,只要ts文件修改就会自动生成js文件。
如果我们希望ts文件有错误的时候不自动生成js文件,就去配置文件打开noemitonerror:true emit翻译是发送也就是有错误就不发送,语义就是有错误不生成。也可以tsc --noEmitOnError --watch这样监听的时候开启。
3.ts的新数据类型
我们说了ts是静态类型检查,也就是说只要声明变量,就需要提前去定义好他们的数据类型。
ts在js的基础上多了6个新类型,现在我们就先说新类型怎么用。
any类型可以赋值任何类型,甚至可以直接给number类型赋值为字符串。unknown是可以赋值任何类型但是不可以给其他变量赋值,而且不可以使用原型上的方法,除非判断确定是什么类型。
never就是定义为never之后变量不可以定义任何值,没有意义,可以给函数的返回值设置never那样就必须终止函数,不能有返回值。
一般用于函数返回值声明,语法上函数可以返回undefined是显示还是隐式无所谓,语义调用者不关心函数返回值不依赖返回值进行任何操作即使是undefined。
object类型,声明之后除了number boolean string null undefined 都可以存储到变量中,所以一般不用 Object声明除了null undefined都可以存,所以一般 也不用。
我们一般用 图中的方式声明对象,数组函数。
枚举enum定义一组常量防止出现拼写之类的错误。
这是数字枚举生成对应的js代码,很多而且其实没有意义,因为我们只需要输出.Up,所以我们用常量枚举,优化性能。
type类型--为任意类型创建别名
两种使用方式(或和且)
4.属性修饰符
1.public
这里的Person类中的所有数据包括方法都是默认public类内部子类类外部都可以访问
属性可以简写
2.protected
只有类的内部和子类可以访问
3.private
只能在类的内部使用
4.readonly
只读的不能修改
5.抽象类
用abstract关键字去定义抽象类以及抽象方法,然后让子类继承。
6.interface(接口)
7.泛型
8.类型声明文件
当我们希望引入js文件到ts文件中,需要提前配置一个d.ts文件用declare声明js文件所有函数类等数据的数据类型。
包括html文件引入js的时候type改为module。然后ts文件就可以import {add} from './demo.js'
TypeScript 本质上不是为了让你写更多代码,而是为了让你在项目越来越复杂的时候,不至于被代码反噬。
从这篇文章你可以看到:
- 它解决了 JavaScript 运行时才报错的“后知后觉”;
- 它通过类型系统带来开发体验和团队协作的飞跃;
- 它并不难入门——只要你愿意加个 .ts 后缀,从配置、编译、到类型声明、泛型、接口、修饰符,都能按需使用、逐步加深。
TypeScript 的优势不是立竿见影,而是在你维护、协作、重构时,带来一种“被保护”的开发体验。
学习 TypeScript 的过程,就是**从写 JS 到写“更稳的 JS”**的过程。
如果你还没用上 TypeScript,现在就是一个刚刚好的开始。未来你一定会感谢现在决定学习它的自己。