TS-1-类型

TypeScript中的基本类型

TS变量声明时指定类型

  • 通过类型声明可以指定TS中变量(参数、形参)的类型,(类型使用小写),使得变量只能存储某种类型的值

  • 类型

    类型例子描述
    number1, -33, 2.5任意数字
    string‘hi’, “hi”, hi任意字符串
    booleantrue、false布尔值true或false
    字面量其本身限制变量的值就是该字面量的值
    any*任意类型
    unknown*类型安全的any
    void空值(undefined)没有值(或undefined)
    never没有值不能是任何值
    object{name:‘孙悟空’}任意的JS对象
    array[1,2,3]任意JS数组
    tuple[4,5]元素,TS新增类型,固定长度数组
    enumenum{A, B}枚举,TS中新增类型
  • 基本语法:

    let 变量: 类型;//先声明再赋值
    let 变量:类型 = 值; //同时声明和赋值
    let 变量=值;//声明和赋值时同时进行的,可以省略掉类型声明,默认为值的类型
    function fn(参数:类型,参数:类型) :类型 {}

      let name:string
      name='huge' //
      name=123    //提示错误
    
      let age:number = 123 // let age=123
      //结果age都是设定为number类型
    
    
  • 字面量:

    • 直接使用字面量进行类型声明

      let a: 10; // 变量a就等于10,类似const定义变量,不可以赋其他值

    • 可以使用 | 来连接多个类型(联合类型)

      let b: “man” | “women”; //变量b 可以是这个两个值其中一个
      b = “man”
      b = “women”

      let c: boolean | string ;//变量c 可以是布尔类型,亦可以是字符串类型
      c = true
      c = ‘hello’

  • any类型:

    • any表示所有类型都可以使用,如果声明变量不指定类型,默认为any类型

    let d:any
    d = 123
    d = true
    d = “abcd”

    let e //变量不指定类型,默认为any类型
    e = 123
    e = true
    e = “abcd”

    • any类型的变量可以被赋值给其他类型的变量

    let a:string
    let b:any = 123
    a = b //此时a的类型就变成了any
    a= true //如果再将其他类型的赋值给a, 是不允许的,a还是只能接受string类型

  • unknown类型:

    • 表示未知类型的值,unknown类型的变量,不能直接赋值给其他变量

    let e:unknown
    e = 10 / e = “hello” /… 变量e可以接受任何类型的值

    let a:number = 10
    e = ‘hello’
    a = e (报错) //不能直接赋值

    if(typeof e === ‘number’) a = e //先判断类型相同再赋值
    类型断言,确定了e的类型是和a的类型一致,才能赋值

    • 语法:

      1. 变量 as 类型
      2. < 类型 > 变量

    a = e as number
    a = < number > e

  • void 类型

    • void 用来表示空,以函数为例,就表示没有返回值的函数

    let a:void
    a = 123 [ 错误 ]
    a = “abc” [ 错误 ]
    a = undefined [ 正确 ]

      function fn() {} // 没有设置类型,函数默认void,既可以有返回值又可以没有返回值
    
      function fn2():void {} //指定了void类型,则函数不能有返回值
    
  • never 类型

    • never表示永远不会有返回结果,undefined
  • object 类型

    • 如果想让变量的类型为object

      let a :{}
      a = {name:‘胡歌’}
      a = {age:10,name:‘胡歌’}

    • 规定变量具体内容

        let b:{name:string, age:number} // 变量接受的赋值必须和规定的内容一模一样
        b={name:'胡歌', age:20} //正确
        b={name:'胡歌'}         //报错
        b={name:'胡歌', age:20, love:'car'}//报错
        
        let c:{name:string, age?:number} //属性名后加了问号,则表示属性可选,不是必须
      
        let d:{name:string, [propName:string]:any} // [propName:string]:any} 表示可以添加任意类型的属性
        d={name:"胡歌", love:"钓鱼" , age:10} // 必须存在name属性,其他属性可以随便添加
      
    • 设置函数结构的类型声明:

      语法: (形参:类型,形参:类型,…) => 返回值类型

        let a: (num:number,num2:number)=>number
        a= function(num:number,num2:number):number{
          return num+num2
        }
      
  • array 类型

    • 数组的类型声明
    1. 类型[]
    2. Array<类型>
      let a: string[]
      a=["a","b","c"]
    
      let b: Array<number>
      b=[1,2,3,4]
    
      let c:Array<any>
      c=[1,2,"a","b"]
    
  • tuple 元组

    • 元组就是固定类型的数组
      //语法: [类型,类型,...]
      let a: [string , number ]
      a =["a",123]      //正确
      a =["a"]          //错误
      a =["a",123,"b"]  //错误
    
  • enum 枚举

    • 将可能的结构都列举出来,适用与固定几个值,例如性别
      //1. 声明定义枚举类型
      enum Sex{
        man,
        women
      }
      let student:{name:string , sex:Sex }
      student={name:"胡歌", sex:Sex.man}
      //判断学生性别
      console.log(student.sex===Sex.man)
    
  • 补充

    • &
      let j :{name:string} & {age:number} //表示j必须存在这两个属性,不能少,不能多
      j={name:'胡歌',age:18}   //正确
    
    • 类型别名
      let num: 1 | 2 | 3 | 4 | 5
      //如果还有很多变量也需要num这样指定类型
      type numRule = 1 | 2 | 3 | 4 | 5
      let a:numRule
      let b:numRule
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值