• typeScript常用类型(二)


    本篇学习记录对象,接口,元组, 字面量类型,枚举,any类型

    对象

    JS的对象是由key,value组成的,而在ts中对象的类型就是描述对象的结构

    声明对象:

    // 声明方法一:
    let person :{name:string;age:number;sayHi(name:string):void;great():void } = { 
      name:'章三',
      age:18,
      sayHi(name){},
      great:()=>{}
    }
    // 声明方法二:
    type customObject = {
      name:string
      age:number
      sayHi(name:string):void
      great():void
    }
    let person2:customObject ={
      name:'章三',
      age:18,
      sayHi(name){},
      great:()=>{}
    }
    console.log(person2);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    可选属性:

    // 可选属性
    type customObject1 = {
      name:string
      age?:number
      sayHi(name:string):void
      great():void
    }
    let person3:customObject1 ={
      name:'章三',
      sayHi(name){},
      great:()=>{}
    }
    console.log(person3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    接口:interface

    当一个对象被多次使用的时候,就使用接口(interface)来定义对象类型,达到复用的目的

    // 接口 interface
    interface customObject2 {
      name:string
      age?:number
      sayHi(name:string):void
      great():void
    }
    let person4:customObject2 ={
      name:'章三',
      sayHi(name){},
      great:()=>{}
    }
    console.log(person4);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    接口(interface)与类型别名(type)的区别
    相同点:都可以给对象指定类型
    不同点:接口(interface)只能给对象制定类型,类型别名(type)可以给任何类型指定别名

    接口的继承(extends)

    如果两个或者多个接口里面有公共的属性,就可以把这些属性抽离出来,作为一个公共的接口

    // 接口继承
    interface pageIndex{
      page:number
      size:number
    }
    // interface codeIndex{
    //   page:number
    //   size:number
    //   code:number
    //   message:string
    // }
    interface codeIndex extends pageIndex{
      code:number
      message:string
    }
    let info:codeIndex = {
      code:200,
      message:'great',
      page:1,
      size:20
    }
    console.log(info);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    元组(tuple)

    元组:已知元素数量和类型的数组,各个元素的类型不必相同

    let x:[string,number]
    
     x = ['11',1 ]
    
    • 1
    • 2
    • 3

    字面量类型

      // let 和 const 
      let a = '123'
      const b = '123'
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    上图,a 的类型是string, b 的类型是他本身,并且b不能被修改,就是本身

    // 一般配合联合类型一起使用
    function directives(direction:'up'|'down'|'left'|'right'){
    
    }
    directives('right')
    
    • 1
    • 2
    • 3
    • 4
    • 5

    枚举(enum)

    枚举:enum
    使用枚举定义一些带名字的常量。 TypeScript支持数字的和基于字符串的枚举。
    枚举成员默认有值,且默认是从0开始自增的值
    枚举成员的值为数字称为【数字枚举】,
    枚举成员的值为字符串称为【字符串枚举】,字符串枚举没有自增长的特点,必须要给字符串枚举设置初始化的值

    // 定义一个枚举
     enum Direction {
      Up,
      Down ,
      Left,
      Right,
    }
    function enumFun(params:Direction) {
      console.log(Direction);
    }
    // 使用枚举【Direction.值】
    enumFun(Direction.Down)
    // 字符串枚举
    enum Direction2 {
      Up ='up',
      Down = 'down' ,
      Left ='left',
      Right='right',
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    any类型

    any类型:
    ts中不推荐使用any,会失去ts类型保护。(会让typescript变成anyscrpt)

    let obj:any ={ x: 0 }
    
    // 访问不存在的属性不报错|给不存在的属性赋值不报错,甚至对于错误的操
    //作都不进行报错
    obj.aaa
    obj.aaa = 10
    obj()
    /**
     * 隐士any
     * 声明一个变量不给赋值,也不指定默认值
     * 或者函数的参数不指定类型
     */
    let a // any
    function anyFun (num1){
    // 参数num1 是any类型
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    面试必备:2019年Java 最常见 100+ 面试题解析
    7月底截止截止!汉阳区2022年度总部企业申报条件、原则和材料
    java计算机毕业设计基于安卓Android的健康管理APP
    Linux安装使用Minio
    图书管理系统(基于SSM + Vue + Restful 实现)
    ECharts 实例2
    开发自己的包----(实现自己需要的功能-格式化日期-转义HTML中的特殊字符-还原HTML中的特殊字符---1)
    JAVA错误 找不到或无法加载主类
    【数据结构】二叉树
    第十四届蓝桥杯模拟赛(Python)
  • 原文地址:https://blog.csdn.net/qq_49277509/article/details/126117884