TypeScript——数据类型、接口与类型别名
前言
TypeScript 是基于 JavaScript 的一种静态类型检查的超集(superset),它的出现主要是为了弥补 JavaScript 在大规模应用开发时的一些不足。例如类型安全,错误处理等机制。
基本数据类型的声明
在 JavaScript 是动态类型的语言,对于变量的声明并没有严格的要求,这使得编程时可能会遇到类型错误,而这些错误往往难以在早期发现。TypeScript 作为一种静态类型语言,在代码中可以明确指定数据类型,这使得 TypeScript 的数据类型处理更为严谨。
TypeScript 支持使用 let
和 const
关键字来声明变量,类似于 JavaScript。不同之处在于,我们可以为变量指定类型。我们称这种变量指定类型为显式类型注解。当我们修改类型为显式类型的变量的值时,我们只能在这个类型范围内修改,否则将会报错。
而当你使用原生JavaScript方法声明变量,这个变量会被赋予类型推断,在这种情况下,TypeScript 编译器会根据初始值 10
推断出 a1
的类型为 number
。
复杂数据类型的声明
由于复杂数据类型许多,我们在这里只提较为常见的。
数组类型
数组类型可以通过指定元素类型来声明。
这里的组合数组类型是必须用括号括起来的中间使用|
来间隔开该数组可以存储的类型。如果不用括号括起那么这个变量并不是带代表只能存储Number和String的数组,而是代表可以存贮数字或者只能存贮字符的数组。
元组类型
元组是JavaScript中并没有的概念,这个在Python中有着这个概念。元组类型允许你定义一个数组,其中元素的数量和类型是固定的。这意味着每个位置上的元素必须是特定的类型,并且数组的长度也是固定的。
如果你问:那我就是要psuh值进去会报错吗,其实并不会,但是我们并不推荐这样书写,因为这样破坏元组类型的固定结构,此时这个元组已经类似于普通的数组,因此你psuh一个不被接受的值将会报错。
元组也可以包含可选的额外元素,这些额外元素可以用省略号 (...
) 表示,后面跟一个单一的类型:
这里,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"
}
};
接口的作用
-
定义对象的结构:
- 接口定义了对象应该有哪些属性以及这些属性的类型。
- 在上面的例子中,
Person
接口定义了一个对象,该对象应该有一个name
属性(类型为string
),一个age
属性(类型为number
),以及一个address
属性(类型为一个包含street
和city
的对象)。
-
类型检查:
- 当你创建一个类型为
Person
的变量时,TypeScript 编译器会检查这个对象是否符合Person
接口所定义的结构。 - 如果对象缺少必需的属性或属性的类型不匹配,TypeScript 将会报错。
- 当你创建一个类型为
类型别名
类型别名是一种定义新类型名称的方式,它可以帮助我们创建复杂的类型,并为这些类型提供更具描述性的名称。类型别名可以用于简化复杂的类型表达式,提高代码的可读性和可维护性。使用type关键字来创建。
联合类型别名
函数类型
函数的类型实际上是指,函数的参数类型与返回值的类型。定义函数类型可以帮助我们确保函数的调用方式正确,并且可以提高代码的可读性和可维护性。
- 单独指定参数,返回值类型
- 同时指定参数,返回值类型
这种方式定义函数类型,你可以确保函数的调用方式正确,并且可以提高代码的可读性和可维护性。这有助于在 TypeScript 中编写类型安全的函数。
any
any
是TypeScript中一个特殊类型,当一个值是any
类型时,像函数一样调用它,将其赋给(或从)任何类型的值,或者几乎任何其他在语法上合法的值:any
错误检测的执行
在JavaScript中类型错误是常见并且也十分难以发现的错误,同时JavaScript 的错误检测主要发生在运行时,这是因为 JavaScript 是一种解释型语言,其类型检查是在代码执行过程中动态进行的。TypeScript 则不同,它提供了静态类型检查。这意味着 TypeScript 会在编译阶段对代码进行类型检查,而不是等到运行时。
TypeScript 的错误检测主要发生在编译阶段,通过类型检查和其他静态分析来确保代码符合预期,有助于在代码运行之前发现并修复错误,从而提高代码的质量和可靠性。
转载自:https://juejin.cn/post/7395392375084597285