• Typescript的类型基础


    类型注解

    通过类型注解来标识一个变量的具体类型,语法::Type
    类型注解是放在被修饰的实体的后面,比如:

    const str:string = 'typescript';
    
    • 1

    关于类型检查,有两种模式:

    1. 非严格类型检查【默认的一种方式】,类型检查比较宽松。比如在非严格类型检查模式下,对undefined和null没有做过多的限制,允许把null类型或者undefined类型的值赋给string类型的变量。如果我们需要把JavaScript代码迁移到Typescript上的时候,非严格模式是一个很好的选择,它能够让我们能够快速完成迁移的工作。
    2. 严格类型检查,尽可能的发现代码中的错误,使用严格模式更利于提高代码的质量。

    在tsconfig.json配置文件中设置严格模式

     {
         "compilerOptions": {
            "strict": true,
         }
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    基本数据类型

    Typescript的基本数据类型:boolean、string、number、bigInt、symbol、undefined、null、void、枚举类型、子,字面量类型。

    void类型表示某个值不存在,这个类型作为函数的返回值类型。如果一个函数没有返回值,那么这个函数的返回值类型为void类型。

    枚举类型

    枚举类型是通过enum关键字来定义的,比如:

    enum SSS{
        Spring,
        Summer,
        Fall,
        Winter
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    枚举类型分为:

    1. 数值型枚举,是number类型的子类型,枚举成员的值为数字
    2. 字符串枚举,枚举成员的值为字符串
    3. 异构型枚举,在一个枚举中同时定义了数值型枚举和字符串枚举成员。

    不管是哪一种枚举,都可以通过枚举成员来访问枚举成员的值,比如:

    
    enum Bool{
    	False = 0,
    	True = 1,
    }
    
    Bool.False;  // 0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    顶端类型

    是一种通用的类型,顶端类型包含了类型系统中所有的可能的值。在Typescript中有两种顶端类型:any和unknown。

    重点 any类型就是用来跳过编译器的类型检查的。所有类型都是any的子类型,任何类型的值都可以赋值给any类型

    虽然any类型是能够跳过编译器的类型检查,但是在程序中,我们应该尽可能的减少使用any类型,只有定义明确的类型信息,Typescript编译器才能够有效的进行类型检查,这也是我们选择Typescript的原因。

    unknown类型:任何其他类型的值都能赋值给unknown类型,和any类型一样,但是unknown类型比any类型更安全,因为unknown类型只能赋值给any类型或者unknown类型

    unknown类型的另一个特点就是在使用之前,必须先细化为某一种具体类型,比如:

    function f2(msg:unknown){
       if(typeof msg==='string'){
       		return msg.length;
       }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果没有条件限制,直接返回msg.length,会有提示length的类型应该为unknown:
    在这里插入图片描述
    但是any类型就没有这些限制。

    尾端类型

    Typescript提供的尾端类型是never类型,never类型不包含任何值。never类型是所有其他类型的子类型,所以never类型的值是可以赋值给任何类型的,但是所有其他类型的值不能赋值给never类型。

    never的应用场景

    场景1: never类型可以作为函数的返回值类型,表示函数不能返回一个值,比如:

    function f1():never{
        throw new Error("");
    }
    
    • 1
    • 2
    • 3

    有一种情况是函数没有设置return语句,函数正常执行结束后,是返回一个undefined,这时候函数的返回值类型是void而不是never类型。

    在函数根本不能返回一个值的时候,函数的返回值类型才是never类型。比如上面代码中的f1函数,这个函数中抛出异常,导致函数终止运行,这时候函数不会返回任何值。

    **场景2:**在条件类型中使用never类型来辅助完成一些类型运算,比如:Exclude = T extends U ? never : T;

  • 相关阅读:
    区块链交易平台服务器该怎么选
    阿里P8肝了30天整理的10W字Java面试总结,涵盖26个技术栈,太全了
    请求转发与请求重定向的区别
    【Python函数式编程】——返回函数
    RabbitMQ - 消息堆积问题的最佳解决方案?惰性队列
    LeetCode 622. 设计循环队列
    快速上手SpringBoot
    Kafka(二)- Kafka集群部署
    03_ElasticSearch下载安装
    STM32FATFS文件系统移植
  • 原文地址:https://blog.csdn.net/xuelian3015/article/details/127134955