zoukankan      html  css  js  c++  java
  • Typescript

    原文:TypeScript基本知识点整理

    一、number

    let num1 : number = 20;
    let num2 : number = 175.5;
    let a1 : number = Infinity; //正无穷大
    let a2 : number = -Infinity; //负无穷小
    let a3 : number = NaN;
    

       这和 js 一样,Infinity、-Infinity、NaN 也是属于 Number 类型的;

    二、undefined

    let un : undefined = undefined;
    

      在 ts 中,undefined 也是单独的数据类型,如上。需要注意的是,undefined类型的变量不能被赋值成其他类型,“undefined 类型的数据只能被赋值为 undefined”。

    // 报错,不能编译
    let un: undefined;
    un = 5;
    

    三、null

    let nu : null = null;
    

      同上,null 类型的变量只能赋值为 nul。

      null 是一个空指针对象, undefined 是未初始化的变量,所以可以把 undefined 看成一个空变量, 把 null 看成一个空对象。

    特别注意:在 ts 中, null 和 undefined 类型,是所有其他类型的子类型,即,这哥俩可以被赋值给所有其他类型,并且被赋值后在赋值原来数据类型的数据不会报错...

    // 不会报错,成功编译
    var un = 5;
    un = null;
    un = 6;
    

    四、string 类型

    //值类型
    let str : string = '你好!'
    //引用类型
    let str1 : String = new String('你好!')
    

    五、boolean 类型

    let boo : boolean = true;
    let boo1 : boolean = false
    

    六、symbol 类型(js 在 es6 版本拓展的新的基础数据类型)

    let sy : symbol = Symbol('bar');
    

      和 js 一样,构造这个数据类型的时候只能通过如上的 Symbol 构造函数创建。

    七、数组 类型

    //字面量
    let arr1 : number[] = [1, 2]
    
    //泛型---->相当于数组中每个元素的类型
    let arr2 : Array<string> = ['a', 's']
    
    //构造函数
    let arr3 : string[] = new Array('a', 's')
    
    //联合类型-->这里的联合类型的意思是,数组中元素的类型可以是number 或 string,两种都有也可以
    let arr4 : Array<number | string> = [2, 'a', 3, 'b', ...]
    

    八、元组 类型(tuple)

      这是 ts 特有的数据类型,先看示例:

    let tup : [string, number] = ['asdasd', 43233];
    

      初看上去,和数组看起来有点类似,但是,是由区别的:元组类型由长度限制,并且每一个位置上的数据类型一一对应,如上例中 tup 数组长度只能是 2,且 tup[0] 必须是 string 型,tup[1] 必须是 number 型,这三点是区别于数组的联合类型的地方

    九、枚举 类型(enum)

      枚举类型是个蛋碎一地的类型,这里只记录常用的,研究细节还请移步:Typescript - 枚举

    数字枚举:

    enum REN {
        // nan = 1 ----->初始化下标
        nan,
        nv,
        yao
    }
    console.log(REN.nan)//0
    console.log(REN.nv)//1
    console.log(REN.yao)//2
    //使用数字枚举时,TS 会为枚举成员生成反向映射
    console.log(REN[2])// yao
    

      当然,数字枚举的下标默认从 0 开始,也可以自行设置成员的初始值,他们会自行递增。

    字符串枚举:

    enum SIJI {
        chun = '春',
        xia = '夏',
        qiu = '秋',
        dong = '冬'
    }
    
    console.log(SIJI.chun)//春
    console.log(SIJI.xia)//夏
    console.log(SIJI.qiu)//秋
    console.log(SIJI.dong)//冬
    

      字符串枚举不支持成员自增长,每个成员必须要初始化,且字符串枚举不会为成员生成反向映射。

     

    十、void 类型

      表示没有返回值,一般用于方法(function)中。

    // es 5
    function fn() : void {
        console.log('...')   
    }
    
    // es6
    () : void => {
        console.log('...')   
    }
    

      这里,我们也可以指定函数的返回值为 undefined。因为在 js 中,如果函数没有返回值,则会默认返回 undefined。不过,使用 void 类型可以使表意更清晰。

    十一、 any 类型

      any 类型是一个最通用的类型,其他类型都是 any 的子类型,因此,any 类型可以被赋值成任何类型的值。

    let an : any = 'any 类型';
    console.log(an)//any 类型
    an = 25;
    console.log(an)//25
    

      关于 any 有两点需要注意:

      1)如果在声明变量时,没有声明其类型,也没有初始化,那么在 ts 做类型推断的时候会被判断成 any 类型。

      2)在 any 类型上可以访问任何属性,即使这个属性对于某些数据类型不存在:

    let something: any = 42
    something.mayExist()    // 没问题,因为其可能在运行时存在
    something.toFixed() // 没问题,虽然确实存在,但是编译器并不会去检查
    

    十二、never 类型

      never 类型表示永远不会存在的值的类型,常用于描述函数。never 是任何类型的子类型,never 没有人资类型,即 never 是最后一层,因此,never 型的数据只能被赋值成 never 型。

     

    never 类型通常用于两种情况:

    1.用来描述抛出错误的函数:

    function fn(msg : string) : never {
        throw new Error(msg)
    }
    

     2.函数中存在无法到达的终点,如死循环:

    function fn() : never {
        while (true) {
             // do something
         }
     }
    

    十三、日期 类型

    let da : Date = new Date()
    console.log(da)
    

    十四、正则 类型

    //构造函数声明法
    let reg1 : RegExp = new RegExp('ljy','gi')
    console.log(reg1)
    
    //字面量的声明法
    let reg2 : RegExp = /ljy/gi
    console.log(reg2)
    
  • 相关阅读:
    【Linux】sed笔记
    【Linux】nl笔记
    【Kubernetes】架构全图
    【Linux】tar压缩解压缩笔记
    【Docker】初识与应用场景认知
    【Ubuntu】16.04网卡信息配置
    常用枚举类
    mysql生成主键
    eclipse下mybatis-generator-config插件
    tomcat下载镜像地址
  • 原文地址:https://www.cnblogs.com/cc-freiheit/p/10634520.html
Copyright © 2011-2022 走看看