ts
declare:
declare 关键字用于声明全局变量、类型或模块,通常在类型定义文件(如 .d.ts 文件)中使用。
-
它告诉 TypeScript 编译器这些变量或类型在其他地方已经定义过了,编译器不需要为它们生成代码。
- 例如,在
global.d.ts文件中,declare namespace Menu和declare interface ViteEnv是在全局范围内声明的。
- 例如,在
type:-
type用于定义类型别名。它可以用于基本类型、联合类型、交叉类型、元组等。- 类型别名可以是任何合法的 TypeScript 类型表达式。
- 例如,
type Recordable<T = any> = Record<string, T>;是一个类型别名,用于定义一个具有任意键和值的对象
interface:-
interface用于定义对象的结构。它可以描述对象的属性和方法。- 接口可以扩展其他接口或类型,允许更灵活的类型组合。
- 接口通常用于描述类的形状或对象的结构。
- 例如,
interface MenuOptions和interface MenuInfo是用来描述对象的结构。 区别:
- 扩展性:
interface可以通过extends关键字扩展其他接口, 而type则通过交叉类型(&)来实现类似的功能。 - 合并:多个同名的
interface会自动合并,而type不会。 - 用途:
interface更适合用于描述对象的形状,而type更适合用于复杂类型的组合和别名。 在实际使用中,选择interface还是type主要取决于具体的需求和个人偏好。一般来说,interface更适合用于定义对象的结构,而type更适合用于定义复杂类型或联合类型。