• typeScript 之(3) 类型


     1.初次尝试

    /* 注意: 声明一个变量,同时指定它的类型为number */
    let a : number
    a=10
    a=35
    /* 
    a = 'hello'  
    此行代码会报错,因为变量a的类型是number 不能赋值字符窜 
    注:即使报错, 但是还是编译通过,但是编译后控制台会提示错误内容
    */

    2.简写写法,ts可以自动对变量进行类型检测

    /* 一般写法 */
    /* let c:boolean = true */
    /* 简写 */
    let c= true

    3.能在定义函数时,参数的类型可以避免很多不必要的数据类型转换问题

    function sum(a:number,b:number):number {
      return a + b
    }
    let result = sum(123,345)
    console.log(result)

    4.ts的类型对照表

    新增类型分析

     (1) 字面量  (可以使用 |  来连接多个类型(联合类型))

    let a:10
    /* a=11  报错*/
    let b: "male" | "female" (可以用于性别)
    b="male"
    b="female"
    /* b="hello" 报错 */
    let c:boolean | string;
    c = true;
    c= 'hello'

    扩展:

    // & 表示同步
    let j:{name:string} & {age:number}
    j = {name:'孙悟空',age:18}

    (2) any 任意类型 相当于对这个变量关闭了TS的检测类型 (不推荐使用)

    let d:any   //显示的
    d = 10;
    d = 'hello'

    let e //隐式的
    e = 10
    e= "hello"

    (3)  unknow  表示未知类型的值   实际就是一个类型安全的 any  推荐

    let d:any = 10
    
    let s:string;
    s = d //不报错,d是any,可以给任何变量,顺带改变了s的检测类型
    
    let a:unknown
    a = 'hello'
    //unknown 实际上就是一个类型安全的any
    //unknown 类型的变量 ,不能直接赋值给其他变量
    if(typeof a ==='string')
    {
      s = a
    }
    s  = a as string ;//类型断言
    s = <string> a; //也可以用
    /* s= a 这判断外写是会报错的*/

    (4)  void  用来表示空  以函数为例,就表示没有返回值的函数

    function fn():void {
      
    }

    (5) never 表示永远不会返回结果,用来报错 (仅了解)

    function fn():void {
      throw new Error('报错了!')
    }

    (5) object 

    //{} 用来表示对象中包含哪些属性
    //语法:{属性名:属性值,属性名:属性值}
    //在属性名后边加上 ? ,表示属性是可选的
    let b: {name:string,age?:number};
    b = {name:'孙悟空',age:18}
    
    //[propName:string]:any 表示任意类型的属性
    let c: {name:string,[propName:string]:any};
    c = {name:'猪八戒',age:18,gender:''}
    
    /* 
      设置函数结构的类型声明
        语法:(参数:类型,参数:类型...) => 返回值
    */
    let d:(a:number,b:number) => number;
    d = function(n1:number,n2:number):number{
      return n1+n2
    }

    (6) array

    //number[] 表示数值数组
    let a:number[];
    
    //let b: Array<any>
    let b:Array<number>;
    b = [1,2,3]

    (7) tuple  元组  固定长度的数组

    //元组 元组就是固定长度的数组
    let h:[string,string];
    h = ['hello','HM']

    (8)enum  枚举

    enum Gender {
      Male = 0,
      Female = 1
    }
    
    let a:{name:string,gender:Gender};
    a = {
      name:'孙悟空',
      gender:Gender.Male
    }
  • 相关阅读:
    [BZOJ]4810: [Ynoi2017]由乃的玉米田
    VK Cup 2017
    Educational Codeforces Round 19
    [BZOJ]4162: shlw loves matrix II
    2017-4-14校内训练
    第一次 CSP-S 的游记
    APIO2009 采油区域
    NOIP2017 逛公园
    NOIP2013 货车运输
    【9018:1458】征兵
  • 原文地址:https://www.cnblogs.com/zmztya/p/14717140.html
Copyright © 2020-2023  润新知