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
更适合用于定义复杂类型或联合类型。