Первое, что я сделал бы, это переместил бы вашу карту за пределы функции;нет необходимости воссоздавать его при каждом вызове.Затем вы можете объявить свое отображение как словарь:
type PropName = 'DEVNAME' | 'ID_VENDOR_ENC' | 'ID_SERIAL_SHORT' | 'ID_VENDOR_ID' | 'ID_MODEL_ID' | 'DEVLINKS';
type PortInfoProp = 'comName' | 'manufacturer' | 'serialNumber' | 'vendorId' | 'productId' | 'pnpId';
type PropertyMapping = { [key in PropName]: PortInfoProp };
const map: PropertyMapping = {
DEVNAME: 'comName',
ID_VENDOR_ENC: 'manufacturer',
ID_SERIAL_SHORT: 'serialNumber',
ID_VENDOR_ID: 'vendorId',
ID_MODEL_ID: 'productId',
DEVLINKS: 'pnpId',
}
function propName(name: PropName): PortInfoProp | null {
return map[name] || null
}
Редактировать :
Более кратко, если вам не нужны именованные типы для ключей карты /значения:
const map = {
DEVNAME: 'comName',
ID_VENDOR_ENC: 'manufacturer',
ID_SERIAL_SHORT: 'serialNumber',
ID_VENDOR_ID: 'vendorId',
ID_MODEL_ID: 'productId',
DEVLINKS: 'pnpId',
}
type PropMapping = typeof map;
function propName<K extends keyof PropMapping>(name: K): PropMapping[K] | null {
return map[name] || null
}