0%

泛型

软件工程中,我们不仅要创建定义良好且一致的 API,同时也要考虑可重用性。 组件不仅能够支持当前的数据类型,同时也能支持未来的数据类型,这在创建大型系统时为你提供了十分灵活的功能。

在像 C# 和 Java 这样的语言中,可以使用泛型来创建可重用的组件,一个组件可以支持多种类型的数据。 这样用户就可以以自己的数据类型来使用组件。

阅读全文 »

类型检查机制

TypeScript编译器在做类型检查时,所秉承的一些原则,以及表现出的一些行为。

作用:辅助开发,提高开发效率。

  • 类型推断
  • 类型兼容性
  • 类型保护

类型推断

不需要指定变量的类型(函数返回值的类型),TypeScript可以根据某些规则自动的为其推断出一个类型。

  • 基础类型推断
  • 最佳通用类型推断
  • 上下文类型推断
阅读全文 »

在TypeScript中,类的成员属性 都是 实例 属性,而不是原型属性,类的成员方法 都是 原型 方法。

类的继承

  • 派生类的构造函数必须包含 super 调用。
  • 访问派生类的构造函数中的 this 前,必须调用 super
  • super 代表父类的实例
  • 调用 super(),会执行基类的构造函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Dog {
constructor(name: string) {
this.name = name;
}
name: string
run() {}
}

let dog= new Dog('11');
console.log(dog);

class Husky extends Dog {
constructor(name: string,color: string) {
// 报错 派生类的构造函数必须包含 "super" 调用。访问派生类的构造函数中的 "this" 前,必须调用 "super"。
// super(name);
this.color = color;
}
color: string
}
阅读全文 »

函数

函数是 JavaScript 应用程序的基础,它帮助你实现抽象层,模拟类,信息隐藏和模块。在 TypeScript 里,虽然已经支持类,命名空间和模块,但函数仍然是主要的定义行为的地方。TypeScript 为 JavaScript 函数添加了额外的功能,让我们可以更容易地使用。

  • TypeSCript中函数实参,形参个数必须一一对应,且类型也一一对应。
  • 函数必选参数不能位于可选参数之后。
  • 函数必选参数前的参数如果要取默认值需要赋值undefined占位,必选参数后的参数获取默认值不需要传undefined。
  • 在 JavaScript 里,你可以使用 arguments 来访问所有传入的参数。在 TypeScript 里,你可以把所有参数收集到一个变量里,剩余参数会被当做个数不限的可选参数。
阅读全文 »

接口

接口可以约束对象,函数,类的结构和类型,这是一种代码协作的契约,必须遵守,不能改变。

TypeScript 的核心原则之一是对值所具有的结构进行类型检查。它有时被称做“鸭式辨型法”或“结构性子类型化”。 在 TypeScript 里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

  • 接口关键字:interface
  • 类型断言:用as 或者<>的形式 ,后者在react中使用会出问题
  • 可选属性:通过?来设置
  • 只读属性:通过readonly 来设置
  • 当不确定接口中属性个数时需要使用 索引签名
  • 索引签名包括字符串索引签名数字索引签名
  • 当接口中定义了一个索引后,例如设置了 【x:string】= string,就不能设置y:number了。因为设置了【x:string】= string相当于这个接口的字符串索引返回值都是字符串,而y:number违背这一原则,冲突了
  • 可以同时使用两种类型的索引,但是数字索引的返回值必须是字符串索引返回值类型的子类型。因为 数字索引或转化为字符串索引,而转化的这部分索引对应的值的类型范围 超过了 字符串索引类型的范围,就会报错,相当于超出范围。
阅读全文 »