深入浅出TypeScript | 青训营

111 阅读4分钟

TypeScript 是 JavaScript 的一个超集,本文让我们来学习它。

一、初识 TypeScript

  1. JavaScript:一种脚本语言,用于创建动态网页;动态弱类型语言;只能在运行时发现错误,变量可以被赋值成不同类型。

  2. TypeScript:JavaScript 的超集,用于解决大型项目的代码复杂性;强类型,支持静态和动态类型;可以在编译期间发现并纠正错误;不允许改变变量的数据类型。

TS基础

基础类型

  • 任意类型 any :声明为 any 的变量可以赋予任意类型的值。

  • 数字类型 number :双精度 64 位浮点值。它可以用来表示整数和分数。

  • 字符串类型 string :一个字符系列,使用单引号(’)或双引号(")来表示字符串类型。反引号来定义多行文本和内嵌表达式。

  • 布尔类型 boolean :表示逻辑值:true 和 false。

  • 数组类型 :声明变量为数组。

  • 元组类型:用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同。

  • 枚举类型 enum:枚举类型用于定义数值集合。

  • null :表示对象缺失。

  • undefined :初始化变量为一个未定义的值。

  • void :用于标识方法返回值的类型,表示该方法没有返回值。

  • never :其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

函数类型

1. 函数的三种声明方式:

  • 使用 function 关键字进行声明:
function add(a: number, b: number): number { 
return a + b }
  • 通过函数表达式进行声明:
let add = function (a: number, b: number): number { 
return a + b }
  • 使用箭头函数声明:
let add = (a: number, b: number): number => {
return a + b}

注意:①函数参数需要给明类型;②函数返回值也需要给出类型。

2. 函数参数:

  • 可选参数:可选参数使用 标记,需要放到固定参数的后面。

  • 参数默认值:在参数的类型后面使用 = 声明。

  • 剩余参数:是 ES6 中的一个特性,使用剩余运算符 ... 来获取函数实参中未被形参声明的变量,其取得的值是一个数组。剩余参数也要有类型声明,需要将其声明为数组类型或者元组类型。

  • 返回值类型: void 类型,表示空类型,用作函数的返回值类型。

3. 函数重载:

在 TypeScript 中,函数重载是指通过为同一个函数提供多个不同的签名 (参数类型和数量),以便根据实际传入的参数类型数量,在编译时选择正确的函数声明进行调用。

通过函数重载,我们可以定义一组函数声明,每个声明都描述了函数的参数返回类型。当我们调用函数时,TypeScript 编译器会根据实际传入的参数类型和数量,选择最匹配的函数重载进行调用。

TS中的类

1. 类的定义

语法

class ClassName {
    // 类的属性
    propertyName: type;
    // 构造函数
    constructor() {
        // 构造函数的实现
    }
    // 类的方法
    methodName() {
        // 方法的实现
    }
}

2. 类的实例化

使用 new 关键字来创建类的实例。

let obj = new ClassName();
obj.methodName();

3. 类的属性

TypeScript 中,类的属性可以被定义为类的成员变量,并且可以赋予类型、访问修饰符和默认值等元素。

  • 类的成员变量的类型:类的成员变量可以被定义为一个类型,这个类型可以是基本类型、自定义类型或其他复杂类型。

  • 默认值:在 TypeScript 中,类的属性可以设置默认值,如果没有手动赋值则会使用默认值。

  • 只读属性:在 TypeScript 中,类包含属性和方法,属性可以分为可读写和只读两种。只读属性指的是对象创建后不允许修改的属性,类中只读属性声明时需要使用关键字" readonly "。

TS中的访问修饰符

1. public

public 是默认的访问修改符,表示成员对所有代码可见。

2. private

TypeScript 中的 private 关键字用于指定类中的成员或方法只能在该类内部进行访问和修改,即在类的 外部范围内是不可见的。

3. protected

protectedprivate 类似,也表示只有在类中和子类中可见的成员。