在 TypeScript 中,`static` 关键字用于定义类的静态属性或静态方法。静态属性或方法属于类本身,而不是某个实例,因此它们可以通过类名直接访问,而无需创建类的实例。
在 TypeScript 中,`readonly` 修饰符用于定义只读属性,也就是说,这些属性一旦被初始化后,就不能再被修改。它可以用于类的属性、接口中的属性、或者类型中的属性。
`void` 类型在 TypeScript 中用于表示没有任何返回值的函数。换句话说,`void` 类型通常用于那些不返回值或不关心返回值的函数。
`never` 类型是 TypeScript 中的一种特殊类型,用来表示那些永远不会发生的值。`never` 通常用于以下几种场景:
`any` 类型是 TypeScript 中的一种特殊类型,它表示任意类型。使用 `any` 类型时,TypeScript 对该值的类型不进行检查,也不会进行类型推断。这意味着可以对 `any` 类型的值执行任何操作,而不会触发编译时错误。
`unknown` 类型是 TypeScript 中的一种顶级类型,它表示未知的类型。与 `any` 类似,`unknown` 可以表示任意类型的值,但与 `any` 不同的是,使用 `unknown` 会强制你在对其进行操作之前先进行类型检查或类型断言,从而提高了类型安全性。
TypeScript 的 `extends` 关键字 主要有两个作用:类型约束和条件类型。它在不同的上下文中使用时,功能有所不同。
TypeScript 的 `infer` 关键字 是在条件类型中使用的一种特殊关键字,允许你在条件类型中推断出某个类型。`infer` 通常与 `extends` 条件类型一起使用,用来从某个复杂的类型中提取子类型或者推导出更具体的类型。
TypeScript 的泛型(Generics)是一种强大的工具,允许你在定义函数、接口或类时不预先指定具体的类型,而是让用户在使用时传入具体的类型。泛型使得代码可以在保持类型安全的同时,更加灵活和可重用。
TypeScript 的索引访问类型(Indexed Access Types)允许我们通过指定某个属性的键来访问类型中的某个属性的类型。这种特性可以使我们在类型系统中动态地引用某个类型的部分内容,类似于在 JavaScript 中通过 `obj[key]` 访问对象属性的值。
TypeScript 的条件类型(`Conditional Types`)是一种基于条件的类型系统,可以根据某个条件动态地选择和推导类型。条件类型类似于 JavaScript 中的三元表达式(`condition ? trueBranch : falseBranch`),但用于类型层面。
TypeScript 的类型别名(`type alias`)是一种为某种类型创建一个新的名称的方式。类型别名可以用来命名任何类型,包括原始类型、对象类型、联合类型、元组类型等。类型别名提供了更简洁、更具可读性的方式来定义和使用复杂的类型。