我有一个数组的值:
const currencies = ['USD', 'BRL', 'EUR']
// The true array has more then 15 currencies values
我想避免这样做以避免代码重复:
type Currencies = 'USD' | 'BRL' | 'EUR'
可以将这些值用作类型吗?我试图这样做:
type Currencies = $Values<currencies>
但是我得到一个错误,因为$ Values仅用于对象。
不重复代码的最佳方法是什么,因为我已经在数组中包含了这些值。
最佳答案
据我所知,目前尚无方法使用数组使用流进行此操作。
一种方法是将数组变成对象,并在$Keys
中使用typeof
const currencies = ['USD', 'BRL', 'EUR'];
const currenciesObj = currencies.reduce((agg, next) => ({...agg, [next]: true}), {});
type Currencies = $Keys<typeof currenciesObj>;