这是我参与【第五届青训营】伴学笔记创作活动的第4天
一、学习TypeScript的意义
- 为JavaScript提供可选的类型系统
- 兼容当前及未来的JavaScript的特性
给JavaScript加上类型系统的意义
- 类型有利于代码的重构,有利于编译器在编译时而不是运行时捕获错误;
- 类型是出色的文档形式之一,函数签名是一个定理,而函数体是具体的实现。
1. 强类型 VS 弱类型
我们都知道JavaScript是一门弱类型的语言,也就是说,我们定义一个变量,不需要考虑它的类型,比如我们定义一个变量a,给它赋值为1
let a = 1
然后我们可以把它赋值为一个字符串、数组、对象等等任意类型
a = '轨迹'
a = [1,3,4]
a = {name: "轨迹"}
这样做虽然写起来很爽,不会报错,但是会有很多隐患。如果代码出现问题,很难找到问题出在哪里。
强类型语言的特点就是不允许改变变量的数据类型,除非进行强制类型转换
弱类型的一个特点就是在计算时,不同类型之间对使用者透明地对变量进行隐式转换。 也就是说变量可以被赋予不同的数据类型
2. 静态语言 VS 动态语言
都说JavaScript是动态语言,而Java是静态语言,那他们的区别到底是什么呢?
其实就是:
在编译阶段确定所有变量的类型的是静态类型语言;在执行阶段确定所有变量的类型的是动态类型语言。
所以说,类型有利于代码的重构,它有利于编译器在编译时而不是运行时捕获错误。我们在编写代码的时候就能避免很多错误,这样可以提高我们编码(找bug)的效率!
最后来个对比表格
| 静态类型语言 | 动态类型语言 |
|---|---|
| 对类型极度严格 | 对类型非常宽松 |
| 立即发现错误 | 不能立即发现(单元测试) |
| 运行时性能好 | 运行时性能差(可以改善 v8) |
| 自文档化 | 可读性差(工具生成文档) |
二、TypeScript特性
TypeScript作为JavaScript的超集,TypeScript究竟比JavaScript多了哪些特性?
- 相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能;
- TS可以在代码执行前就完成代码的检查,减小了运行时异常的出现的几率;
- TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题;
- 同样的功能,TS的代码量要大于JS,但由于TS的代码结构更加清晰,变量类型更加明确,在后期代码的维护中TS却远远胜于JS。
也就是说我们编写的TypeScript代码,最终要编译成任意版本的JavaScript,这样就可以在任何可以使用JavaScript的地方使用它了~
三、接口(Interface)是什么?
相比JavaScript,typescript中的接口(Interface)是一个新的概念,首先来了解一下接口到底是什么?
接口声明(interface declaration)是命名对象类型的另一种方式,它能将多个类型注解合并成一个类型注解。
对象类型的一种声明方式, 就是通过接口来声明:
通过接口, 声明一个对象类型
// 接口名前面加上一个大写的I
interface IInfoType {
name: string
age: number
}
const info: IInfoType = {
name: "GUIJI",
age: 18
}
使用接口定义时, 有一个规范, 接口名前面加上一个"I", 这个是规范, 遵不遵守看个人意愿 口也可以定义只读属性, readonly
interface InfoType {
// 定义只读属性
readonly name: string
age: number
}
const info: InfoType = {
name: "GUIJI",
age: 18
}