TypeScript学习笔记

本文是自己在学习TypeScript的过程中所记录的需要注意的地方,如果想要学习的话,还是去看官方文档。

1、原始数据类型
使用构造函数 Boolean 创造的对象不是布尔值,直接调用 Boolean 也可以返回一个 boolean 类型
  • (×) let createdByNewBoolean: boolean = new Boolean(1);
  • (√) let createdByNewBoolean: Boolean = new Boolean(1);
  • (√) let createdByBoolean: boolean = Boolean(1);
ES6 中的二进制和八进制表示法,它们会被编译为十进制数字
  • let binaryLiteral: number = 0b1010; → var binaryLiteral = 10;
  • let octalLiteral: number = 0o744; → var octalLiteral = 484;
声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null
  • (√) let unusable: void = undefined;
与 void 的区别是,undefined 和 null 是所有类型的子类型
  • (√) let num: number = undefined;
  • (√) let u: undefined; let num: number = u;
  • (×) let u: void; let num: number = u;
2、任意值any
  • 在任意值上访问任何属性都是允许的
  • 声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值
3、类型推论
  • 变量如果在声明的时候,未指定其类型,未赋值,那么它会被识别为任意值类型 let something;
4、联合类型
  • 只能访问此联合类型的所有类型里共有的属性或方法
  • 联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型
5、对象的类型——接口
  • 任意属性 [propName: string]: any;
  • 一旦定义了任意属性,那么确定属性和可选属性都必须是它的子属性
  • readonly id: number;只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候
6、数组的类型
  • 类数组(Array-like Object)不是数组类型,比如 arguments
  • 常见的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等
7、函数的类型
  • 在 TypeScript 的类型定义中,=> 用来表示函数的定义,左边是输入类型,需要用括号括起来,右边是输出类型
  • 可选参数后面不允许再出现必须参数了
  • 将添加了默认值的参数识别为可选参数,此时就不受「可选参数必须接在必需参数后面」的限制了
  • 重载,优先从最前面的函数定义开始匹配,多个函数定义如果有包含关系,需要优先把精确的定义写在前面
8、字符串字面量类型
  • 类型别名与字符串字面量类型都是使用 type 进行定义
9、元组
  • 当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型
10、枚举
  • 手动赋值的枚举项可以不是数字,此时需要使用类型断言来让 tsc 无视类型检查
    enum Days {Sun = 7, Mon, Tue, Wed, Thu, Fri, Sat = “S”};
  • 手动赋值的枚举项也可以为小数或负数,此时后续未手动赋值的项的递增步长仍为 1
  • 枚举项有两种类型:常数项和计算所得项,如果紧接在计算所得项后面的是未手动赋值的项,那么它就会因为无法获得初始值而报错
11、类
  • 三种修饰符 public、private 和 protected
    1、public 修饰的属性或方法是公有的,可以在任何地方被访问到,默认所有的属性和方法都是 public的
    2、private 修饰的属性或方法是私有的,不能在声明它的类的外部访问

    需要注意的是,编译之后的代码中,并没有限制 private 属性在外部的可访问性

    3、protected 修饰的属性或方法是受保护的,它和 private 类似,区别是它在子类中也是允许被访问的

  • 抽象类是供其他类继承的基类,抽象类不允许被实例化。抽象类中的抽象方法必须在子类中被实现

12、类与接口
  • 一个类可以实现多个接口
    class Car implements Alarm, Light{}
  • 接口与接口之间可以是继承关系
    interface LightableAlarm extends Alarm{}
  • 接口也可以继承类
    interface Point3d extends Point{}
13、生命合并
  • 可以使用重载定义多个函数类型
  • 接口中的属性在合并时,合并的属性的类型必须是唯一的
  • 接口中方法的合并,与函数的合并一样
  • 类的合并与接口的合并规则一致
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值