typeScript-变量类型

112 阅读2分钟

TypeScript在JavaScript的基础上加入静态类型检查,每一个变量都有一个固定的数据类型

let message:string="Hello World"

变量类型

  • any
    任意类型,关闭ts类型检测
    当变量只声明,未赋值,变量类型是any(隐式声明)
    可以赋值给任意类型变量

    let d:any  
    d=10  
    d='hello'  
    d=true  
    
  • string

字符串类型,可以用单引号或者双引号

  • number

数字类型,可以赋值整数或浮点数

  • boolean

布尔 true/false

  • unknown
    安全的any类型,不能直接赋值给其他类型

    使用方式

    let e:unknown
    let s:string
    
    //1.if判断类型
    if(typeof e==="string"){
        s=e
    }
    
    
    //2.断言,告诉编译器变量的类型
    s=e as string  //方式1
    s=<string>e  //方式2
    
  • void
    没有任何类型的返回值

  1. 函数没有返回值

    function fun():void{
      return  //方式1
      return undefined  //方式2
      return null  //方式3
    }
    
  2. 变量只能赋值undefined或null

    let a:void=undefined
    let b:void=null
    
  • never
    函数没有返回值,用于报错信息或无限循环

    function fun():never{
        throw new Error('报错了')
    }
    
    function fun():never{
        while(true){
            console.log("无限")
        }
    }
    
  • object

    let a:object  //方式1
    a={}  //方式2
    a=function(){}  //方式3
    
    let p={name:"jack",age:21}
    // 取值
    p.name  
    p['name']
    

    限制对象具有属性,?表示属性可选

    let b:{name:string,age?:number}
    b={name:'张三',age:19}
    

    设置任何类型的数据,属性是string类型,值为any类型

    let b:{name:string,[propName:string]:any}
    b={name:'舜玉',age:18,gender:'男'}
    

    函数类型声明

    (形参:类型)=>返回值

    let b:(a:number,b:number)=>number
    function(n1:number,n2:number)=>{
    return n1+n2
    }
    
  • 数组

    //方式1
    let c:string[]
    c=['a','b','c']
    
    //方式2
    let d:Array<number>
    d=[1,2,3]
    
  • tuple 元组

    固定长度的数组

    let d=[string,string]
    d=['张六','吴九']
    
  • enum 枚举

    状态值进行枚举,方便书写和使用

    enum Gender{
    Male=0,
    Female=1
    }
    let i:{name:string,gender:Gender}  
    i={
    name:'格ooo',
    gender:Gender.Male
    }
    

声明方法

  • | 或

    let a:string|number
    
  • & 与

    let a:{name:string}&{age:number} 
    a={name:'战士',age:18}
    
  • type 类型别名

    type myType=1|2|3|4|5
    let b=myType
    

undefined,null,空字符串,数字0为作为判断时为false,否则为true

for循环

for ... in in是循环的索引
for ... of of是循环的元素

enum 枚举

枚举项用逗号隔开,没有赋值,值从0开始依次赋值

类与接口

enum Msg{
    HI="Hi",
    HELLO="Hello"
}

interface A{
    say(msg:Msg):void
}

class B implements A{
    say(msg:Msg):void{
        console.log(msg+'I am B')
    }
}
let a:A=new B()
a.say(Msg.Hi)
class Rectangle{
    private width:number
    private length:number
    constructor(width:number,length:number){
        this.width=width
        this.length=length
    }
    public area(){
        return this.width*this.length
    }
}
class Square extends Rectangle{
    constructor(side:number){
        super(side,side)
    }
}
let s=new Square(10)
console.log('正方形的面积是:'+s.area())