zoukankan      html  css  js  c++  java
  • TypeScript基本类型

    类型注解

    作用:相当于强类型语言中的类型声明
    语法:(变量/函数):type

    数据类型

    新建src/datatype.ts,里面定义各种类型的数据

    原始类型:

    let bool: boolean = true
    let num: number = 123
    let str: string = 'abc'
    

    数组:

    let arr1: number[] = [1, 2, 3]
    let arr2: Array<number> = [1, 2, 3]  
    
    PS:
    以上的含义是该数组只能是number;
    但如果我们需要添加其他类型,就要采用联合类型方式:
      let arr2: Array<number | string> = [1, 2, 3, '4']
    

    元组 - 是特殊的数组,它限定了数组元素的类型和个数:

    let tuple: [number, string] = [0, '1']
    
    PS:
      我们可以通过push方法为元组添加新元素,但是不能越界访问,因此实际工作中不建议这样使用:
      tuple.push(2)
      console.log(tuple) // [0, '1', 2]
      tuple[2] // 报错
    

    函数

    let add = (x: number, y: number): number => x + y
    
    PS:
      以上包括参数和返回值类型注解,通常返回值类型注解可以省略,这就利用了ts的类型推断功能。
      也可以这样定义:
      let compute: (x: number, y: number) => number
      compute = (a, b) => a + b
    

    对象

    let obj: object = {x: 1, y: 2}
    obj.x // 提示错误,因为不确定里面是否包含x属性
    // 改成这样就可以了:
    let obj: {x: number, y: number} = {x: 1, y: 2}
    obj.x
    symbol - 含义是具有唯一的值:
    
    let s1: symbol = Symbol()
    let s2 = Symbol()
    console.log(s1 === s2) // false
    undefined/null:
    
    
    let un: undefined = undefined
    let nu: null = null
    num = undefined  // 提示错误
    num = null // 提示错误
    
    PS:
      把一个变量赋值成undefined/null时,只能取undefined/null值,不能取其他类型的值;反之,其他类型却可以赋值给undefined/null,只不过需要对tsconfig.json做如下设置:
      "strictNullChecks": false,
    PS:
      但是这种方式一般不推荐,如果非要对其他类型赋值undefined/null,最好使用联合类型,上面就不会报错了:
      let num: number | undefined | null = 123
    

    void是js中的一种操作符,它可以让任何表达式返回undefined,如:

    void 0 // undefined
    
    PS:
      在ts中,void类型表示没有任何返回值的类型,比如一个没有任何返回值的函数:
      let noReturn = () => {}
    any类型 - 不定义类型时默认为any类型,可以任意赋值,不建议使用
    
    never表示永远不会有返回值的类型,有两种情况:抛出异常函数和死循环函数
    
    let error = () => {
      throw new Error('error')
    }
    let endless = () => {
      while(true) {}
    }
    
  • 相关阅读:
    java代码,继承。。。主要是传值,赋值。
    java代码继承。。。找出不能继承父类方法的问题
    java代码继承super
    HDU 6114 Chess
    #113. 【UER #2】手机的生产
    uoj 118 赴京赶考
    戏game
    序sort
    迷enc
    Jupyter 同时支持python2、python3 kernel
  • 原文地址:https://www.cnblogs.com/xfxing/p/12649981.html
Copyright © 2011-2022 走看看