Typescript-类型系统初识

Typescript

类型系统初识

什么是类型

程序 = 数据结构 + 算法 = 各种格式的数据 + 处理数据的逻辑

数据是有格式(类型)的
  • 数字、布尔值、字符
  • 数组、集合
程序是可能有错误的
  • 计算错误(对非数字类型数据进行一些数学运算)
  • 调用一个不存在的方法

不同类型的数据有不同的操作方式或方法,如:字符串类型的数据就不应该直接参与数学运算

动态类型语言 & 静态类型语言
动态类型语言

程序运行期间才做数据类型检查的语言,如:JavaScript

静态类型语言

程序编译期间做数据类型检查的语言,如:Java

静态类型语言的优缺点
优点
  • 程序编译阶段(配合IDE、编辑器甚至可以在编码阶段)即可发现一些潜在错误,避免程序在生产环境运行了以后再出现错误
  • 编码规范、有利于团队开发协作、也更有利于大型项目开发、项目重构
  • 配合IDE、编辑器提供更强大的代码智能提示/检查
  • 代码即文档
缺点
  • 麻烦
  • 缺少灵活性
动态类型语言
优点
  • 静态类型语言的缺点
缺点
  • 静态类型语言的优点

静态类型语言的核心 : 类型系统

什么是类型系统

类型系统包含两个重要组成部分

  • 类型标注(定义、注解) - typing
  • 类型检测(检查) - type-checking
类型标注

类型标注就是在代码中给数据(变量、函数(参数、返回值))添加类型说明,当一个变量或者函数(参数)等被标注以后就不能存储或传入与标注类型不符合的类型

有了标注, TypeScript 编译器就能按照标注对这些数据进行类型合法检测。

有了标注,各种编辑器、IDE等就能进行智能提示

类型检测

顾名思义,就是对数据的类型进行检测。注意这里,重点是类型两字。
类型系统检测的是类型,不是具体值(虽然,某些时候也可以检测值),比如某个参数的取值范围(1-100之间),我们不能依靠类型系统来完成这个检测,它应该是我们的业务层具体逻辑,类型系统检测的是它的值类型是否为数字!

类型标注
  • 在 TypeScript 中,类型标注的基本语法格式为:
    数据载体:类型
  • TypeScript 的类型标注,我们可以分为
    • 基础的简单的类型标注
    • 高级的深入的类型标注

基础的简单的类型标注

  • 基础类型
  • 空和未定义类型
  • 对象类型
  • 数组类型
  • 元组类型
  • 枚举类型
  • 无值类型
  • Never类型
  • 任意类型
  • 未知类型(Version3.0 Added)
基础类型
  • 基础类型包含:string,number,boolean
  • 标注语法
        let title: string = 'xzx';
        let n: number = 100;
        let isOk: boolean = true;
    
空和未定义类型
  • 因为在 Null 和 Undefined 这两种类型有且只有一个值,在标注一个变量为 Null 和 Undefined 类型,那就表示该变量不能修改了
        let a: null;
        // ok
        a = null;
        // error a = 1;
    
  • 默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 其它类型的变量
        let a: number;
        // ok
        a = null;
    
  • 如果一个变量声明了,但是未赋值,那么该变量的值为 undefined ,但是如果它同时也没有标注类型的话,默认类型为 any , any 类型后面有详细说明
        // 类型为 `number`,值为 `undefined`
        let a: number;
        // 类型为 `any`,值为 `undefined`
    
小技巧
  • 因为 null 和 undefined 都是其它类型的子类型,所以默认情况下会有一些隐藏的问题
        let a:number;
        a = null;// ok(实际运行是有问题的)
        a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值