2021-04-26
TypeScript
0

目录

TypeScript 是一门静态类型、弱类型的语言
动态类型 静态类型
强类型 弱类型
接口可以定义数组、函数等一系列引用对象的值
一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集
类型断言的限制
元祖,当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型
类在创建时,生成的类型只包含其中的实例属性和实例方法
全局变量的声明文件中,是不允许出现 import, export 关键字的。若无关键字,则被视为全局变量的声明文件。

最近又刷了一遍TypeScript文档,一来是巩固知识,二来是每次看都能Get新知识点

TypeScript 是一门静态类型、弱类型的语言

动态类型 静态类型

类型系统按照「类型检查的时机」来分类,可以分为动态类型和静态类型。

动态类型是指在运行时才会进行类型检查,这种语言的类型错误往往会导致运行时错误。

JavaScript 是一门解释型语言,没有编译阶段,所以它是动态类型

强类型 弱类型

类型系统按照「是否允许隐式类型转换」来分类,可以分为强类型和弱类型。

接口可以定义数组、函数等一系列引用对象的值

ts
//数组 interface NumberArray { [index: number]: number; } let fibonacci: NumberArray = [1, 1, 2, 3, 5]; //函数 interface SearchFunc { (source: string, subString: string): boolean; } let mySearch: SearchFunc; mySearch = function(source: string, subString: string) { return source.search(subString) !== -1; }

一旦定义了任意属性,那么确定属性和可选属性的类型都必须是它的类型的子集

ts
interface Person { name: string; age?: number; // Error [propName: string]: string; } let tom: Person = { name: 'Tom', age: 25, gender: 'male' };

类型断言的限制

  • 联合类型可以被断言为其中一个类型
  • 父类可以被断言为子类
  • 任何类型都可以被断言为 any
  • any 可以被断言为任何类型
  • 要使得A能够被断言为B,只需要A兼容B或B兼容A即可

元祖,当添加越界的元素时,它的类型会被限制为元组中每个类型的联合类型

ts
let tom: [string, number]; tom = ['Tom', 25]; tom[0] =30 //Error Type 'number' is not assignable to type 'string'. tom.push('male'); tom.push(true); //Error Argument of type 'true' is not assignable to parameter of type 'string | number'.

类在创建时,生成的类型只包含其中的实例属性和实例方法

同样的,在接口继承类的时候,也只会继承它的实例属性和实例方法。

ts
class Clock { hour: number = 1 minute: number = 2 static timestamp = 1000 } interface ClockConstructor { new (hour: number, minute: number): Clock timestamp: number } const clock: ClockConstructor = Clock

全局变量的声明文件中,是不允许出现 import, export 关键字的。若无关键字,则被视为全局变量的声明文件。

本文作者:BARM

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!