如何在TypeScript中无需复制数组值设置显式数组类型?
解决方案
不用重复复制数组内容,用TypeScript的const断言就能实现精确的元组类型推断:
const mediaFileKeys = ["mp3", "wave", "stems", "image"] as const;
这样写之后,mediaFileKeys的类型会被TypeScript自动推断为readonly ["mp3", "wave", "stems", "image"]——也就是你想要的显式值类型元组,完全保留了元素的字面量值和顺序,而且只需要写一次数组内容。
如果你的场景需要非只读的元组类型,可以通过类型工具把只读元组转换为普通元组:
// 先定义只读元组 const _mediaFileKeys = ["mp3", "wave", "stems", "image"] as const; // 转换为普通元组类型 type MediaFileTuple = [...typeof _mediaFileKeys]; // 显式标注普通元组类型 const mediaFileKeys: MediaFileTuple = ["mp3", "wave", "stems", "image"];
不过大多数情况下,只读元组已经能满足需求(比如用来限定允许的文件类型),第一种as const的写法是最简洁高效的。
内容的提问来源于stack exchange,提问作者datsenkoboos
相关产品推荐
相关产品推荐

