typescript 如何全局声明 enum 枚举类型和值?

作者站长头像
站长
· 阅读数 63

如题,我使用 vue+ts 开发项目,想要在全局声明 enum 枚举类型并赋默认值,因为项目中我会多出用到枚举类型,我希望全局可以直接使用,是必须导出并导入吗?目前我是通过 .d.ts 声明文件来声明的,直接使用会报错,该枚举类型未定义。test.d.ts

declare enum Directions {
  Up=1,
  Down=2,
  Left=3,
  Right=4
}

index.ts

function getDirection (direction: Directions) {
  console.log('##########direction', direction)
}
getDirection(Directions.Up)
回复
1个回答
avatar
test
2024-06-29
// 在 types.ts 文件中
export enum UserType {
  Admin = 'Admin',
  User = 'User',
  Visitor = 'Visitor'
}

然后在需要使用的地方导入:

import { UserType } from './types';

let user: UserType = UserType.Admin;

对于全局声明,你可以在项目根目录下的 shims.d.ts 文件中进行声明,或者在 src 目录下创建一个新的 .d.ts 文件:// shims.d.ts

declare enum UserType {
  Admin = 'Admin',
  User = 'User',
  Visitor = 'Visitor'
}

然后你就可以在整个项目中使用这个枚举类型了,无需导入:let user: UserType = UserType.Admin;需要注意的是,全局声明的枚举类型无法使用 import 导入。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容