• 002--typeScript基础类型


    1.布尔类型,只有true和false两种类型

    let isDone: boolean = true
    let isStart: boolean = false

    2.数字,有4种分别是十进制,十六进制,二进制和八进制

    //用不同进制表示20
    let decLiteral: number = 20 //十进制
    let hexLiteral: number = 0x14//十六进制
    let binaryLiteral: number = 0b10100//二进制
    let octalLiteral: number = 0o24//八进制
    console.log(decLiteral,decLiteral,binaryLiteral,octalLiteral)

    tsc编译后

    //用不同进制表示20
    var decLiteral = 20; //十进制
    var hexLiteral = 0x14; //十六进制
    var binaryLiteral = 20; //二进制
    var octalLiteral = 20; //八进制
    console.log(decLiteral, decLiteral, binaryLiteral, octalLiteral);//20 20 20 20

    3.字符串

    字符串可以用单引号去表示也可以用双引号表示,为了表示统一,我们一致用单引号表示

    let myName: string = 'cc'
    let age: number = 18
    let sentence = `
    my name is ${myName}  I will be  ${age} years old next month.
    `//字符串可以这样表示
    console.log(sentence)//my name is cc  I will be  18 years old next month.

    4.数组一般有两种方式表示

    let list: number[] = [1,2,3]//推荐这种
    let list1: Array<number> = [1,2,3]//数组泛型,和上方表示的意思一样
    //这两种方式数组里面只能填写数字

    5.元祖

    表示数组的类型和长度是已知的

    let x: [string,number]
    x = ['hello', 10]
    
    console.log(x[0].substr(1))//这种方法是可行的,因为第一个元素是string
    x[3] = 5
    x[4] = 'cc'//这两种方法给越界元素赋值是可行的,越界元素实际上是联合类型
    console.log(x[5].toString())//3.1版本后会报Tuple type '[string, number]' of length '2' has no element at index '5'.
    x[7] = true //此种不可行,超越了刚才定义的元祖类型

    6.枚举类型

    注意枚举类型的元素首字母是大写的

    // enum Color {
    //   Red,
    //   Green,
    //   Blue
    // }
    //可以像对象一样取出值
    // let c:Color = Color.Blue
    //枚举类型默认是从0开始编号的,我们可以修改,可以指定不同的编号,不必连续
    enum Color {
      Red = 1,
      Green = 2,
      Blue = 3
    }
    let colorName:string = Color[2]
    //我们可以根据值的编号来反查值
    console.log(colorName)//green

    为什么可以根据编号查询到值呢,可以看编译后的文件

    var Color;
    (function (Color) {
        Color[Color["Red"] = 1] = "Red";
        Color[Color["Green"] = 2] = "Green";
        Color[Color["Blue"] = 3] = "Blue";
    })(Color || (Color = {}));
    var colorName = Color[2];
    //我们可以根据值的编号来反查值
    console.log(colorName); //green

    7.any类型

    我们不清楚的类型,或者是动态类型等可以赋值成any,  typeScript不会做语法检查

    let notSure:any = 4
    notSure = 'maybe a string instead'
    notSure = true //这样都是可以的,因为ts会跳过语法检查 
    let list: any = [1,'cc',true]//这样是可行的,对于数组来说非常有用

    8.void类型

    void是和any相反的,void表示不返回任何值

    function warnUser(): void{
      console.log('This is my warnning message')
    }
    let undecleared: void = null
    let undecleared1: void = undefined//给变量赋值给void是没意义的,只能赋值成null或者undefined

    9.null和undefined

    let n: null = null
    let u: undefined = undefined
    let n1: null = undefined
    let u1: undefined = null
    //null和undefined是其他数值的子类型,子类型是可以给父类型赋值的
    let num:number = 3
    num = null //在这里是没有报错的,如果编译的时候加上--strictNullChecks会报错
    //Type 'undefined' is not assignable to type 'null'. 
    //Type 'null' is not assignable to type 'undefined'.
    // Type 'null' is not assignable to type 'number'.
    //如果我们非得赋值给null可以使用联合类型
    let num1: number | null = 3//联合类型
    num1 = null

    10.never

    表示永远不存在的数值类型,never是所有数值的子类型

    //程序报错时使用
    function error(msg: string): never{
      throw new Error(msg)
    }
    function fail() {
      return error('something faild')
    }
    //无限循环时使用
    function inifinitelLoop(): never {
      while(true){
    
      }
    }  

    11.object

    declare function create(o:object | null): void;
    
    create({prop: 0})
    create(null)
    
    //下面是不可行的
    create(42)
    create('123')
    create(true)

    12.类型断言

    代表你会比ts更了解某个值的类型或详细信息

    let someValue: any = 'this is a string'
    // let strLength:number = (<string>someValue).length
    let strLength:number = (someValue as string).length
    //上述两种断言表示的意思一样

    2019-05-23  15:20:15

    工欲善其事,必先利其器
  • 相关阅读:
    关于“.bash_profile”和“.bashrc”区别的总结
    更新CentOS的SQLite版本
    关于 javadoc
    IDEA一些功能的记录
    Java 反射机制
    Java 注解
    有趣的代码实例
    Bash
    Java 枚举
    Java 零星知识实时补充
  • 原文地址:https://www.cnblogs.com/ccbest/p/10912106.html
Copyright © 2020-2023  润新知