为什么使用TS
TypeScript
TypeScript
class类
getter setter
泛型
let lastInArray = <T>(arr:T[]) =>{}
let lastInArray = <T>(arr:Array<T>) =>{}
此时的arr的可以是任意类型的数组且不显示为any
类型适配
(<string>message)需要圆括号括起来
或者使用 as 断言
Array 数组类型
tuple 元组类型
Number数字类型
String字符串类型
boolean布尔类型
typescript类型:boolean string number array tuple enum null undefined object void never any 以及高级类型 union组合类型 Nullable可空类型 Literal预定义类型
Class 类
Generics 泛型
创建Module模块
把class放到单独文件中,再export类,支持外部文件访问
引入外部文件:import { Point } from "./point"
访问修饰符:public, private, protected
private:私有属性,外部无法访问
如果需要访问私有属性,需要使用getter, setter
Interface接口
Object对象类型
ts对对象类型的定义:键类型对key to type(js是键值对)
?是可选参数
code: number = 0 默认参数
类型适配(类型断言)Type Assertions:通知TS进行类型适配的过程
let message: any;
message = "abc";
mesage.endsWith("c");
let ddd = (<string>message).endsWith("c")
let ddd2 = (message as string).endsWith("c")
void
undefined:变量没有赋值,没有初始化
void:变量本身就不存在
never:一个函数永远执行不完
Any任意类型
Unknown未知类型
不保证类型,但能保证类型安全
使用Any适合快速成型,快速上线,但有一定的安全隐患
使用Unknown更加保险,保证类型安全
Enum枚举类型
Union联合类型
一个变量可以支持两个或者几个不同的类型,用竖线分割
let union: string | number
let union2 : number | string | boolean | string[]
Literal字面量类型,表示固定值(字面意义)
let union3: 0 | 1 | 2
let literal : 1 | "2" | true | [1,2,3,4]
Array数组
数组中可以存放任意类型的数据,JS中数组的宽容度非常大,TS也很好的继承了这一点
let list: number[] = [1,2,3,4]
let list2: Array<number> = [1,2,3,4]
let list3 = [1,2,3,4]
let list4 = [1, "add"]
let list5: any[] = [1, "dss", true]
tuple元祖:固定长度,固定类型的数组
let person1: [number, string] = [1, "jack"]
tuple元祖bug:person1.push(3) 不报错,不满足固定长度的定义
声明元祖一定要指明类型,不指明类型就是普通的array
Number:整数、浮点、正负数
String:单引号、双引号、反引号(字符串模板)
boolean:true, false
TypeScript类型
基本类型
boolean, string, number, array, null, undefined, object
元祖tuple, 枚举enum
void, never, any
高级类型:
union组合类型
Nullable 可空类型
Literal 预定义类型
1. 什么是TypeScript:是js的超集,包含ES5/6/7/8,语法结构构建在js上
ts无法在浏览器中运行,需要编译,翻译为js
Typing强类型,可以规范代码,在编译阶段就能及时发现错误,在原生js基础上加上一层类型的定义
2. 为什么要使用TypeScript
类型推演与类型匹配
开发编译时报错
极大程度的避免了低级错误
支持Js的最新特性,包括ES6/7/8
JS: 10 + 5 = 105
自动进行类型检查,避免低级错误,帮我们写出更高质量的代码
tyscriptlang.org
ES6 = ES2015 ES7 = ES2016 ES8 = ES2017 babel 转换
枚举类型
let union: string | number
union = 2 ;
union = "sdasadjkas" ;
type