typescript入门

84 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第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类型  

高级类型

联合/交叉类型

  1. 联合类型 A|B 表示一个值可以是几种类型之一
    注意:访问联合类型时,仅能访问联合类型中的交集部分

  2. 交叉类型: IA & IB 多种类型叠加在一起成为一种类型

关键词类型

  1. 索引类型:关键字【keyof】,其相当于取值时对象中的所有key组成的字符串字面量
  2. 关键字 【in】,其相当于取值,字符串字面量中的一种可能,配合泛型P,即表示每个key
  3. 关键字【?】,通过设定对象可选选,即可自动推导出子集类型
  4. 关键字【extends】跟随泛型出现,表示类型推断,其表达可类比三元表达式
    T === 判断类型? 类型A:类型B
  5. 关键字【infer】出现在类型推荐中,表示定义类型变量,可以用于指代类型

·