likes
comments
collection
share

TypeScript——数据类型、接口与类型别名

作者站长头像
站长
· 阅读数 20

前言

TypeScript 是基于 JavaScript 的一种静态类型检查的超集(superset),它的出现主要是为了弥补 JavaScript 在大规模应用开发时的一些不足。例如类型安全,错误处理等机制。

TypeScript——数据类型、接口与类型别名

基本数据类型的声明

在 JavaScript 是动态类型的语言,对于变量的声明并没有严格的要求,这使得编程时可能会遇到类型错误,而这些错误往往难以在早期发现。TypeScript 作为一种静态类型语言,在代码中可以明确指定数据类型,这使得 TypeScript 的数据类型处理更为严谨。

TypeScript——数据类型、接口与类型别名

TypeScript 支持使用 letconst 关键字来声明变量,类似于 JavaScript。不同之处在于,我们可以为变量指定类型。我们称这种变量指定类型为显式类型注解。当我们修改类型为显式类型的变量的值时,我们只能在这个类型范围内修改,否则将会报错。

TypeScript——数据类型、接口与类型别名

而当你使用原生JavaScript方法声明变量,这个变量会被赋予类型推断,在这种情况下,TypeScript 编译器会根据初始值 10 推断出 a1 的类型为 number

TypeScript——数据类型、接口与类型别名

复杂数据类型的声明

由于复杂数据类型许多,我们在这里只提较为常见的。

数组类型

数组类型可以通过指定元素类型来声明。 TypeScript——数据类型、接口与类型别名

这里的组合数组类型是必须用括号括起来的中间使用|来间隔开该数组可以存储的类型。如果不用括号括起那么这个变量并不是带代表只能存储Number和String的数组,而是代表可以存贮数字或者只能存贮字符的数组。

TypeScript——数据类型、接口与类型别名

元组类型

元组是JavaScript中并没有的概念,这个在Python中有着这个概念。元组类型允许你定义一个数组,其中元素的数量和类型是固定的。这意味着每个位置上的元素必须是特定的类型,并且数组的长度也是固定的。

TypeScript——数据类型、接口与类型别名

TypeScript——数据类型、接口与类型别名

如果你问:那我就是要psuh值进去会报错吗,其实并不会,但是我们并不推荐这样书写,因为这样破坏元组类型的固定结构,此时这个元组已经类似于普通的数组,因此你psuh一个不被接受的值将会报错。

元组也可以包含可选的额外元素,这些额外元素可以用省略号 (...) 表示,后面跟一个单一的类型: TypeScript——数据类型、接口与类型别名

这里,tuple 包含一个字符串、一个数字,之后可以跟随任意数量的数字。

接口

接口可以用来定义复杂的类型结构。在 TypeScript 中,使用接口(interface)来定义对象的形状是一种常见的做法。接口定义了对象的结构,包括属性的名称和类型。

interface Person {
  name: string;
  age: number;
  address: {
      street: string;
      city: string;
  };
}
let person: Person = {
  name: "LiHua",
  age: 25,
  address: {
      street: "123 NC",
      city: "NanChang"
  }
};

TypeScript——数据类型、接口与类型别名

接口的作用

  1. 定义对象的结构

    • 接口定义了对象应该有哪些属性以及这些属性的类型。
    • 在上面的例子中,Person 接口定义了一个对象,该对象应该有一个 name 属性(类型为 string),一个 age 属性(类型为 number),以及一个 address 属性(类型为一个包含 street 和 city 的对象)。
  2. 类型检查

    • 当你创建一个类型为 Person 的变量时,TypeScript 编译器会检查这个对象是否符合 Person 接口所定义的结构。
    • 如果对象缺少必需的属性或属性的类型不匹配,TypeScript 将会报错。

类型别名

类型别名是一种定义新类型名称的方式,它可以帮助我们创建复杂的类型,并为这些类型提供更具描述性的名称。类型别名可以用于简化复杂的类型表达式,提高代码的可读性和可维护性。使用type关键字来创建。

TypeScript——数据类型、接口与类型别名

TypeScript——数据类型、接口与类型别名

TypeScript——数据类型、接口与类型别名

联合类型别名

TypeScript——数据类型、接口与类型别名

TypeScript——数据类型、接口与类型别名

函数类型

函数的类型实际上是指,函数的参数类型与返回值的类型。定义函数类型可以帮助我们确保函数的调用方式正确,并且可以提高代码的可读性和可维护性。

  • 单独指定参数,返回值类型

TypeScript——数据类型、接口与类型别名

TypeScript——数据类型、接口与类型别名

  • 同时指定参数,返回值类型

TypeScript——数据类型、接口与类型别名

这种方式定义函数类型,你可以确保函数的调用方式正确,并且可以提高代码的可读性和可维护性。这有助于在 TypeScript 中编写类型安全的函数。

any

any是TypeScript中一个特殊类型,当一个值是any类型时,像函数一样调用它,将其赋给(或从)任何类型的值,或者几乎任何其他在语法上合法的值:any

TypeScript——数据类型、接口与类型别名

错误检测的执行

在JavaScript中类型错误是常见并且也十分难以发现的错误,同时JavaScript 的错误检测主要发生在运行时,这是因为 JavaScript 是一种解释型语言,其类型检查是在代码执行过程中动态进行的。TypeScript 则不同,它提供了静态类型检查。这意味着 TypeScript 会在编译阶段对代码进行类型检查,而不是等到运行时。

TypeScript——数据类型、接口与类型别名

TypeScript 的错误检测主要发生在编译阶段,通过类型检查和其他静态分析来确保代码符合预期,有助于在代码运行之前发现并修复错误,从而提高代码的质量和可靠性。

转载自:https://juejin.cn/post/7395392375084597285
评论
请登录