typescript基础教程

typescript

变量的声明

声明方式

  • 声明了类型后TypeScript就会进行类型检测,声明的类型可以称之为类型注解

  • 变量的定义格式

    • var/let/const 标识符: 数据类型 = 赋值;

类型介绍

  • javascript类型

    • number类型

    • boolean类型

    • Array类型

      • 1.类型[ ]

      • 2 规则 Array<类型>

      • 规则

        • // 在数组中存放不同的类型是不好的习惯
        • // 不好的习惯: 一个数组中在TypeScript开发中, 最好存放的数据类型是固定的(string)
        • // 类型注解: type annotation
          const names1: Array = [] // 不推荐(react jsx中是有冲突
          )
          const names2: string[] = [] // 推荐
    • Object类型

      • object

      • 对象字面量{}

        • 无法对其增加属性(少用)
    • string类型

    • Symbol类型

    • null和undefined类型

  • type

    • 定义类型别名
  • 可选链的使用

    • ?.
    • 当对象的属性不存在时,会短路,直接返回undefined,如果存在,那么才会继续执行
  • 可选类型

    • 一个参数一个可选类型的时候, 它其实类似于是这个参数是 类型|undefined 的联合类型
  • 联合类型

    • 能使用尽量使用
  • Any 类型 和 unknown 顶级类型

    • unknown类型

      • //这样写会报错unknow类型不能作为子类型只能作为父类型 any可以作为父类型和子类型
        //unknown类型不能赋值给其他类型

//unknown可赋值对象只有unknown 和 any
- 如果是unknown 是不能调用属性和方法
- //unknown类型不能赋值给其他类型

- any类型

	-  在某些情况下,我们确实无法确定一个变量的类型,并且可能它会发生一些变化,这个时候我们可以使用any类型(类似

于Dart语言中的dynamic类型)。
- 声明变量的时候没有指定任意类型默认为any

  • void类型

    • JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数
    • void也可以定义undefined 和 null类型
  • Null和undefined类型

    • 与 void 的区别是,undefined 和 null 是所有类型的子类型
  • never类型

    • 使用 never 类型来表示不应该存在的状态(很抽象是不是)
    • 用于场景兜底逻辑
  • tuple类型

    • tuple是元组类型
    • 固定数量的不同类型的元素的组合
    • 对于越界的元素他的类型被限制为 联合类型(就是你在元组中定义的类型)
  • 布尔类型

    • 注意,使用构造函数 Boolean 创造的对象不是布尔值
    • 事实上 new Boolean() 返回的是一个 Boolean 对象
  • 符号

    • ??操作符

      • 空值合并操作符(??)是一个逻辑操作符,当操作符的左侧是 null 或者 undefined 时,返回其右侧操作数,
        否则返回左侧操作数;
      • 可选类型
      • 在这里插入图片描述
    • !!操作符

      • p将一个其他类型转换成boolean类型;
        p类似于Boolean(变量)的方式;
      • 非空类型断言

        • 非空断言使用的是 ! ,表示可以确定某个标识符是有值的,跳过ts在编译阶段对它的检测
  • readonly

    • 只读属性是不允许被赋值的只能读取
  • 对象的类型

    • 在typescript中,我们定义对象的方式要用关键字interface(接口),我的理解是使用interface来定义一种约束,让数据的结构满足约束的格式。
    • type
    • 两者区别
  • 函数类型

    • 函数拓展
    • 函数的默认值
    • 函数重载
  • 交叉类型

    • 多种类型的集合,联合对象将具有所联合类型的所有成员
  • 类型断言

    • 语法:  值 as 类型  或  <类型>值 value as string value

    • 类型断言只能够「欺骗」TypeScript 编译器,无法避免运行时的错误,反而滥用类型断言可能会导致运行时错误

    • as const

      • 是对字面值的断言,与const直接定义常量是有区别的

如果是普通类型跟直接const 声明是一样的

  • 类型别名

    • 顾名思义
  • 使用枚举 通过enum关键字定义我们的枚举

    • const枚举

      • let 和 var 都是不允许的声明只能使用const
    • 反向映射

  • 类型推论

    • 如果你声明变量没有定义类型也没有赋值这时候TS会推断成any类型可以进行任何操作
  • 类型缩小

    • 在给定的执行路径中,我们可以缩小比声明时更小的类型,这个过程称之为 缩小
    • 常见的类型保护有如下几种:
      ptypeof
      p平等缩小(比如===、!==)
      pinstanceof
      pin
      p等等…

函数也是种类型

接口(*)

两种声明对象中的其中一种

interface 加 I

interface和type区别

  • interface 可以重复的对某个接口来定义属性和方法;
    p而type定义的是别名,别名是不能重复的

类的定义

  • getters/setters

多态

  • 多态的目的是为了写出更加具备通用性的代码

继承

抽象类

  • 抽象类无法被实例化
  • 我们定义的抽象方法必须在派生类实现

类的成员修饰符

  • ppublic 修饰的是在任何地方可见、公有的属性或方法,默认编写的属性就是public的;
    pprivate 修饰的是仅在同一类中可见、私有的属性或方法;
    pprotected 修饰的是仅在类自身及子类中可见、受保护的属性或方法;

静态 成员

  • static
  • 随着类的调用而调用

为什么使用ts? js与ts对比?

TypeScript函数类型

可推导的this类型

  • 我在公众号也有一篇文章专门讲解this:https://mp.weixin.qq.com/s/hYm0JgBI25grNG_2sCRlTA;

内置对象

背景

TypeScript可以编译出纯净、 简洁的JavaScript代码

搭建ts启动环境

  • 1使用ts-node

    • n 方式二:安装ts-node
      n 另外ts-node需要依赖 tslib 和 @types/node 两个包:
      n 现在,我们可以直接通过 ts-node 来运行TypeScript的代码:
      使用ts-node
      npm install ts-node -g
      npm install tslib @types/node -g
      ts-node math.ts
  • 2使用webpack

泛型

常用名称

  • T:Type的缩写,类型
    pK、V:key和value的缩写,键值对
    pE:Element的缩写,元素
    pO:Object的缩写,对象

泛型接口

泛型类

泛型约束

模块化开发

命名空间namespace

declare文件

declare命名空间

XMind: ZEN - Trial Version

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值