TypeScript 如何从数组取值推导类型,限制另一数组仅为原数组取值组合
TypeScript 实现方案
- 第一步:先给原常量数组添加
as const断言,让 TypeScript 可以识别到数组元素的具体字面量值,而不是宽泛的string类型
const frequencyOptions = ['Daily', 'Weekly', 'Monthly'] as const;
- 第二步:从常量数组中提取元素的联合类型
// 此时 FrequencyOption 的类型等价于 'Daily' | 'Weekly' | 'Monthly' type FrequencyOption = typeof frequencyOptions[number];
- 第三步:给目标数组声明
FrequencyOption[]类型即可
// 任意元素组合都合法,包括空数组 let frequencyValues: FrequencyOption[] = ['Daily', 'Weekly']; let emptyValues: FrequencyOption[] = []; let allValues: FrequencyOption[] = ['Daily', 'Weekly', 'Monthly'];
如果写入不在frequencyOptions范围内的值,TypeScript 会直接抛出类型错误:
// 报错:类型"Yearly"不能分配给类型"FrequencyOption" let errorValues: FrequencyOption[] = ['Daily', 'Yearly'];
内容的提问来源于stack exchange,提问作者Biswa
相关产品推荐
相关产品推荐

