这是我参与「第四届青训营 」笔记创作活动的第4天
typescript发展历史
js 是一个动态类型语言 ;而ts 是一种静态类型语言(提前执行)。
差异:
- 编译发生在执行期间还是提前执行
- 类型约束,在编译阶段能暴露大部分的错误
TypeScript
是微软开发的一门编程语言,是JavaScript
的一个超集,包含和兼容js特性
基本语法
ts中需要类型约束
const a = 'string ;
ts:
const a:string = 'string';
对象数据类型
const buy:IBYte = {
id:1223,
name:'Lin',
sex:'man',
age?:number //?指可选属性,可有可不有
}
interface IBYte {
id:number;
name:string;
sex:'man'|'woman'|'other',
age:number
}
函数类型
const mult: (x:number,y:number) => (x,y)=> x * y
数组类型
type IARR = number[]
//泛型表示
type Iarr = Array<string>
//元祖表示 类型一定要按指定类型编写
type arr = [number,string,number]
泛型约束:限制泛型必须符合约束类型
//不预先指定具体的类型,而在使用的时候再指定类型的一种特性
type IGet = <T>(target:T) =>T[];
//泛型参数默认类型
type IGe<T = number> = (target:T) => T[];
如果不传,则参数默认为number类型
高级类型
联合/交叉类型
-
联合类型 A|B 表示一个值可以是几种类型之一
注意:访问联合类型时,仅能访问联合类型中的交集部分 -
交叉类型: IA & IB 多种类型叠加在一起成为一种类型
关键词类型
- 索引类型:关键字【keyof】,其相当于取值时对象中的所有key组成的字符串字面量
- 关键字 【in】,其相当于取值,字符串字面量中的一种可能,配合泛型P,即表示每个key
- 关键字【?】,通过设定对象可选选,即可自动推导出子集类型
- 关键字【extends】跟随泛型出现,表示类型推断,其表达可类比三元表达式
T === 判断类型? 类型A:类型B- 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型
·