TypeScript变量类型

TypeScript变量类型

  1. 数字

    let a_number: number = 10
    
  2. 字符串

    let a_string: string = 'hello'
    
  3. 布尔型

    let a_boolean: boolean = true
    
  4. 联合类型

    /* 联合类型 */
    let b: "male" | "female";
    b = "male"
    b = "female"
    let c: boolean | string;
    c = true
    c = 'hello'
    /* 使用&连接类型 */
    let n: { name: string } & { age: number }
    n = { name: '张三', age: 18 }
    
  5. any类型

    /* any任何类型,如果声明变量不指定类型,则为隐式any */
    let d: any
    d = 10
    d = 'hello'
    
  6. 未知类型

    /* 表示未知类型的值 */
    let e: unknown
    e = 10
    e = 'hello'
    /* 和any的区别:
    any类型的变量赋值给任意类型的变量并不会报错,
    unknown类型的变量不能赋值给别的类型,会报错不能将类型“unknown”分配给类型“string” */
    // a_string = e
    /* unkonwn类型实际上是一个类型安全的any
    通过如下方法进行赋值 */
    if (typeof e === "string") {
        a_string = e
    }
    /* 类型断言 */
    a_string = e as string
    a_string = <string>e
    
  7. void空类型

    /* 函数返回值为void(没有值) */
    function fn1(): void {
    }
    
  8. never类型

    /* 函数返回值为never,永远不会返回结果(void也是一种返回值)*/
    function fn2(): never {
        throw new Error('报错了')
    }
    
    
  9. 对象类型

    /* 定义a为一个对象 */
    let f: object
    f = {}
    /* 常用 */
    /* 一般同时定义对象中该有哪些属性,属性名后面添加问好表示属性是可选的*/
    let g: { name: string, age?: number }
    g = { name: '张三' }
    /* 设置可以额外添加属性 */
    let h: { name: string, [propName: string]: any }
    h = { name: '李四', age: 18, gender: '男' }
    
    /* 函数类型对象声明 */
    let i: (a: number, b: number) => number
    i = function (n1: number, n2: number): number {
        return n1 + n2
    }
    
  10. 数组类型

    /* 定义JS数组 */
    let j: string[]
    let k: Array<number>
    j = ['a', 'b', 'c']
    
  11. tuple类型

    /* 定义元组tuple,就是固定长度的数组 */
    let l: [string, string]
    l = ['hello', 'world']
    
  12. enum枚举类型

    /* 定义enum枚举 */
    enum Gender {
        Male = 1,
        Female = 2
    }
    let m: { name: string, gender: Gender }
    m = {
        name: '张三',
        gender: Gender.Male
    }
    
  13. 类型别名

    /* 类型别名 */
    type myType = 1 | 2 | 3 | 4 | 5
    let o: myType
    
posted @ 2021-12-09 18:58  BONiii  阅读(96)  评论(1)    收藏  举报