Typescript

一、Typescript

1.介绍Typescript

1.1Typescript是什么
  • TypeScript(简称:TS)是JavaScript的超集。
  • js中操作的都是数据,ts中类型系统操作的是类型,js和ts中很多操作时类型,只是操作的对象不一样
1.2Typescript于JS的优缺点
  • 优点:可以在不执行代码时发现错误,提高开发效率。
  • 缺点:书写代码的时间会比JS时间长
1.3Typescript使用流程
  1. 首先安装ts的工具包
  2. tsc -v 查看是否安装成功
  3. 使用循环 创建 ts 文件 → 编译 TS → 执行 JS

2.Typescript的数据类型

2.1基本数据类型
  • 布尔类型boolean

  • 数值类型number

  • 大数值bigint

  • 字符串类型string

  • // boolean
    var flag: boolean = true
    
    // number
    var age: number = 18
    // age = '20'//不能将‘string’分配给‘number’
    
    var money:bigint = 10000000000000000000000000n
    
    var msg: string = 'hello world'
    msg = 'hello typescript'
    
  • Array数组

  • enum枚举:变量的值是固定的,比如性别。

  • //Array方式一:数组元素类型[] 方式二:Array<数组元素的类型>
    var arr: number[] = [1, 2, 3, 4, 5] //大多数使用该方式
    var arr1: Array<string> = ['a', '11', '女'] //该功能功能是最强大的
    
    //enum 枚举:变量的值有限,比如性别
    enum Gender {
        MAN,
        WOMAN
    }
    console.log(Gender[0]);
    console.log(Gender[1]);
    console.log(Gender['MAN']);
    console.log(Gender['WOMAN']);
    
  • 元组 Tuple 类似于数组,但里面的元素可以是不同类型的

  • var user:[string,number,string,string[]] = ['成龙', 66, '男', ['html', 'css', 'javascript']]
    
    // void 无效,空白。代表没有任何类型,常见于函数的返回值
    // function fn():void{
    // }
    
  • null 和 undefined

  • never异常的数据类型, unknown 是any的安全类型

  • 字面量类型

  • var value: unknown
    value = 1
    value = ''
    value = true
    value = []
    value = {}
    var value1:any = value
    var value2:unknown = value
    // var value3:string = value //报错:不能把unknown类型的值赋给具体的类型,不能将类型“unknown”分配给类型
    
    
    //字面量类型,通常和联合类型一起使用,表示类型或的关系
    type EventType = 'click' | 'dblclick'
    var ev:EventType = 'click'
    document.body.addEventListener(ev,function(){  
        
    })
    
2.2高级类型
  • 联合类型:就是 js 中的短路或

  • function getSum(a:number | string, b:number | string): number {
        return +a + +b
    }
    
  • 交叉类型:就是数据里的并集,既有A类型的属性或方法,也有B类型中的属性或方法。

  • interface IUser{
        id:number
        name:string
    }
    interface IInfo {
        score:number
    }
    //这里使用 & 并集
    var user1 :IInfo & IUser= {
        id:0,
        name:'李四',
        score:99
    }
    
  • 可选类型:使用工具类型中的Partial让对象的所有类型变成可选。

  • interface IStudent{
        id:number
        name:string
        score:number
    }
    //这里使用Partial就可以让IStudent里的属性变为可写也可以不写
    var s1 :Partial<IStudent>  = {
        id:0,
        name:'ls',
    } 
    
  • 条件类型:相当于js中的三元/三目表达式

  • interface Fish{
        name1:string
    }
    interface Water{
        name2:string
    }
    interface Bird{
        name3:string
    }
    interface Sky{
        name4:string
    }
    
    //这里判断T这个类型 ,如果是Fish 就返回Water 否则返回 Sky
    type TAnimal<T> = T extends Fish ? Water : Sky
    var animal:TAnimal<Bird> = {
        // name1:'天空' //报错:对象字面量只能指定已知的属性,但“name1”中不存在类型“Sky”。是否要写入 name4
        name4:'天空'
    }
    
  • 映射类型:就是把一个对象属性的类型处理成另一个对象的类型,他们是一一对应的关系。

  • type User = {
        name?:string
        location:string
        age?:number
    }
    // keyof User => name | location | age
    // P in keyof User : P是一个类型变量,判断是否属于 name | location | age
    // 三个属性中的一个
    type MyPartial<T> = {
        [P in keyof T]-? : T[P]
        // -? 就是把所有属性变为必填
        //上面一行代码执行结果1就是下面三行代码
        // name:string
        // location:string
        // age:number
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值