typescript 基础

 

 

TypeScript是JavaScript类型的超集,它提供了类型系统和对JavaScript新标准的支持。在TypeScript中,类型系统是其核心特性之一,它允许开发者为变量、函数参数和返回值等指定类型,从而在编译阶段就能发现潜在的类型错误,提高代码的健壮性和可维护性。以下是TypeScript类型的全解:

一、基本类型
number:表示数字,可以是整数或浮点数。支持二进制、八进制、十进制和十六进制。
string:表示字符串,可以使用模板字符串。
boolean:表示布尔值,即true或false。
null:表示空值,通常用于初始化变量或表示不存在的值。
undefined:表示未定义的值,当一个变量声明了但没有被赋值时,它的类型就是undefined。
symbol:表示唯一的、不可变的值。
any:表示任意类型,关闭类型检查。一般在需要与动态类型交互的情况下使用,但不建议滥用,因为它会失去TypeScript提供的类型安全性。
void:表示没有类型,通常用于函数没有返回值的情况。
never:表示永远不存在的值的类型,通常用于表示抛出异常或无法执行到终点的代码路径。
二、复杂类型
object:表示非原始类型,即除了number、string、boolean、null和undefined之外的类型。在TypeScript中,object类型是一个泛型类型,可以表示任何非原始类型的值。
array:表示数组,可以是单一类型数组(如number[]、string[]),也可以是混合类型数组(如(number | string)[])。
tuple:表示固定长度的数组,可以指定每个元素的类型。tuple类型允许在数组中存储不同类型的元素,但元素的数量和类型必须在声明时确定。
enum:表示一组命名的常数值。枚举类型使得代码更加清晰和易于维护,因为它允许开发者为特定的值指定易于理解的名字。
三、高级类型
联合类型(Union Types):可以表示多个类型中的任意一个。联合类型使用竖线(|)分隔多个类型,表示一个值可以是这些类型中的任何一个。
交叉类型(Intersection Types):可以表示多个类型的交集。交叉类型使用&符号将多个类型合并为一个类型,表示一个值同时具有这些类型的属性。
类型别名(Type Aliases):可以给一个类型起一个新的名字。类型别名使用type关键字定义,它使得代码更加简洁和易于理解。
类型断言(Type Assertions):可以手动指定一个值的类型。类型断言使用as关键字或尖括号语法(<>),它告诉TypeScript编译器:
“我知道这个值的实际类型,请按照我指定的类型来处理它。” 类型字面量(Type Literals):直接描述一个对象的结构,包括其属性和属性的类型。类型字面量通常用于函数参数、返回值或对象类型的声明中。 四、其他类型 函数类型:在TypeScript中,函数也是一种类型。可以为函数的参数和返回值指定类型,甚至可以为函数的形状(即参数和返回值的类型)指定一个类型别名。 构造函数类型:表示一个可以创建对象的函数。在TypeScript中,可以使用类或构造函数来创建对象,并且可以为这些构造函数指定类型。 索引签名(Index Signatures):对象可以有一个索引签名,它描述了对象可以拥有的属性的键和值的类型。索引签名使得对象可以像数组一样通过索引来访问其属性,
但键的类型通常是string或number。 五、特殊类型 类型保护(Type Guards):是一种表达式,它返回一个布尔值,并且可以在运行时检查一个值是否属于某种特定类型。
类型保护使得开发者能够在运行时安全地处理不同类型的值。 条件类型(Conditional Types):根据条件选择类型。条件类型使用typeof、instanceof等操作符来检查值的类型,并根据检查结果返回不同的类型。 映射类型(Mapped Types):基于一个已存在的类型创建一个新的类型。映射类型通过遍历已存在类型的所有属性,并为每个属性应用一个转换函数来生成新的类型。 综上所述,TypeScript提供了丰富而强大的类型系统,使得开发者能够在编译阶段就发现和修复潜在的类型错误,从而提高代码的健壮性和可维护性。
同时,TypeScript的类型系统也非常灵活和可扩展,允许开发者根据自己的需求定义和使用各种类型。

 

posted on 2024-10-20 23:10  是水饺不是水饺  阅读(56)  评论(0)    收藏  举报

导航