typescript - 如何使用 Typescript 从数组动态构建枚举
问题描述
我想从文件列表中动态构建我的打字稿枚举,但我不知道该怎么做。
这是我为获取值数组而编写的代码:
const fs = require('fs');
fs.readdir('./src/assets/icons', (err, files) => {
const name = files
.filter(file => file.match('.svg'))
.map(fileFiltred => fileFiltred.replace('.svg', ''))
console.log(name) // ["arrow-right", "home", "menu"...]
})
我们可以动态构建一个打字稿枚举吗?如何 ?
您认为我必须在我的文件夹中手动编写所有图标名称,如下所示?
enum iconName {
HOME = 'home',
ARROW_RIGHT = 'arrow-right',
MENU = 'menu',
}
谢谢 !
解决方案
您不能在运行时仅从键创建实际的打字稿枚举。
无论如何,您将如何使用它?枚举是为了确保您没有在代码中使用您之前未在枚举中定义的任何未知值。
要获得这种效果,您需要在项目中的某个位置拥有枚举,您的 IDE 无法神奇地知道目录中存在哪些图标。
您可以做的是,在获得图标名称列表后,检查这些图标名称是否存在于您的枚举中:
let array: string[] = ["arrow-right", "home", "menu"];
enum MyEnum {
home = 'home',
svg = 'svg'
}
array.forEach(element => console.log(MyEnum[element as MyEnum]))
推荐阅读
- docker - Dockerfile - 找不到满足 serverlessrepo==0.1.5 要求的版本
- google-apps-script - 如何以编程方式从 Google 表格数据透视表中删除“值”
- azure-databricks - 我需要一个 azure_databricks 作业因异常而失败,但它没有这样做
- .net - 如何检查是否在与 xUnit(.net 核心)的集成测试中引发异常?
- python - 计数核苷酸脚本(填补空白)
- diff - Diff/Merge 工具,它也允许编辑文件
- symfony - 下拉菜单中的默认值
- c# - 带有 Prism 库的 Xamarin.Forms 应用程序中的多个 NavigationStack
- javascript - 浏览器 Javascript:将 Json 压缩为 gzip 并上传到 S3 预签名 URL
- amazon-web-services - 是否可以将网络负载均衡器用于使用 UDP 协议的 ECS 服务?