You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为webpack导入的音频文件生成TypeScript常量文件名类型?

获取Webpack导入音频文件的文件名常量类型

要实现需求,可按以下步骤操作:

1. 提取文件名并转为常量数组

直接从require.context返回的上下文对象中提取文件名,处理后标记为常量:

// 创建音频文件上下文
const audioContext = require.context('../assets/audio', false, /\.(mp3)$/);
// 提取文件名(去掉路径前缀和.mp3后缀)
const fileNames = audioContext.keys().map(path => {
  const fileNameMatch = path.match(/\.\/(.*)\.mp3$/);
  return fileNameMatch ? fileNameMatch[1] : '';
}) as const;

此时fileNames的结构就和你要的['sound1', 'sound2'] as const完全一致。

2. 推导对应的文件名类型

如果需要单独的类型定义,可直接从常量数组推导:

type AudioFileName = typeof fileNames[number];
// 最终AudioFileName会是 'sound1' | 'sound2' 这类具体的文件名联合类型

补充说明

  • 如果你仍需保留audioFiles变量,可结合原有代码:
const audioContext = require.context('../assets/audio', false, /\.(mp3)$/);
const audioFiles = webpackImportAll(audioContext);
const fileNames = audioContext.keys().map(path => {
  const fileNameMatch = path.match(/\.\/(.*)\.mp3$/);
  return fileNameMatch ? fileNameMatch[1] : '';
}) as const;
  • 确保webpackImportAll返回的对象是以带后缀的文件名为键的结构,这样后续如果需要通过文件名匹配音频文件时能直接对应。

内容的提问来源于stack exchange,提问作者RomanPolansky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 11:30:50