这是我参与「第四届青训营 」笔记创作活动的第15天
01、什么是TypeScript
a、TypeScript发展史
| JavaScript | TypeScript |
|---|---|
| 动态类型 | 静态类型 |
| 弱类型语言 | 弱类型语言 |
静态类型
- 可读性增强:基于语法解析TSDoc,ide增强(类型提示,代码补全)
- 可维护性增强:在编译阶段暴露大部分错误
=>多人合作的大型项目中,获得更好的稳定性和开发效率
JavaScript的超集
- 包含兼容所有的JS特性,支持共存
- 支持渐进式引入与升级
02、基本语法
基础数据类型
| JS | TS | |
|---|---|---|
| 字符串 | const q = 'string' | const q : string = 'string'; |
| 数字 | const w=1 | const w : number = 1; |
| 布尔值 | const e =true; | const e: boolean = true; |
| null | const r = null; | const r: null = null; |
| underfined | const t = underfined; | const t: underfined = underfined; |
对象类型
一般在ts中声明类型时,开头用以个大写的I表明这是一个类型;
函数类型
1、JS表示
2、TS表示
3、使用TS声明类型的方法
函数重载
数组类型
Typescript类型补充
Typescript泛型
泛型:不预先指定具体的类型,而在使用的时候再指定类型的一种特性
function getREpeatArr(target) {
return new Array(100).fill(target);
}
type IGetRepeatArr = (target: any) => any[];
/*不预先指定具体的类型,而在使用的时候再指定类型的一种特性 */
type IGetRepeatArrR = <T>(target: T) => T[];
泛型不仅仅只使用在函数中,还有一下等多个场景
/* 泛型接口 & 多泛型 */
interface IX<T, U> {
key: T;
val: U;
}
/* 泛型类 */
class IMan<T> {
instance: T;
}
/* 泛型别名 */
type ITypeArr<T> = Array<T>
在函数中泛型在函数定义的括号的前面,在类中或泛型接口、多泛型中,都是在类型名的后面是泛型。