В TypeScript перечисления позволяют определить набор именованных констант. Перечисления часто используются для представления фиксированного набора значений или опций. Иногда вы можете столкнуться с ситуацией, когда вам нужно преобразовать строку в соответствующее значение перечисления. В этой статье блога мы рассмотрим несколько методов достижения такого преобразования, а также приведем примеры кода и пояснения.
Метод 1: использование оператора Switch
Один из самых простых способов преобразования строки в перечисление в TypeScript — использование оператора переключателя. Этот метод включает в себя создание оператора переключения, который сравнивает входную строку с каждым значением перечисления и возвращает соответствующее значение перечисления, если совпадение найдено. Вот пример:
enum Color {
Red = "red",
Green = "green",
Blue = "blue",
}
function convertStringToEnum(input: string): Color | undefined {
switch (input) {
case "red":
return Color.Red;
case "green":
return Color.Green;
case "blue":
return Color.Blue;
default:
return undefined;
}
}
const color: Color | undefined = convertStringToEnum("red");
console.log(color); // Output: Color.Red
Метод 2: использование сопоставления объектов.
Другой подход заключается в использовании сопоставления объектов для связывания каждого строкового значения с соответствующим ему значением перечисления. Этот метод требует создания объекта сопоставления, где ключи — это строки, а значения — значения перечисления. Вот пример:
enum Color {
Red = "red",
Green = "green",
Blue = "blue",
}
const stringToEnumMapping: { [key: string]: Color } = {
red: Color.Red,
green: Color.Green,
blue: Color.Blue,
};
function convertStringToEnum(input: string): Color | undefined {
return stringToEnumMapping[input];
}
const color: Color | undefined = convertStringToEnum("green");
console.log(color); // Output: Color.Green
Метод 3: использование универсальной функции
Если вы предполагаете необходимость преобразования строк в перечисления для разных типов перечислений, вы можете создать универсальную функцию, которая работает с любым перечислением. Этот метод включает использование оператора keyof TypeScript и вывода типа для обеспечения безопасности типов. Вот пример:
enum Color {
Red = "red",
Green = "green",
Blue = "blue",
}
function convertStringToEnum<T extends Record<string, string>>(
input: string,
enumObject: T
): T[keyof T] | undefined {
const enumValues = Object.values(enumObject);
if (enumValues.includes(input)) {
return input as T[keyof T];
}
return undefined;
}
const color: Color | undefined = convertStringToEnum("blue", Color);
console.log(color); // Output: Color.Blue
Преобразование строк TypeScript в перечисления можно выполнить с помощью различных методов, включая операторы переключения, сопоставления объектов и универсальные функции. Эти методы обеспечивают гибкость и позволяют обрабатывать различные сценарии в зависимости от ваших конкретных требований. Используя эти методы, вы можете легко преобразовать строки в соответствующие им значения перечисления в ваших проектах TypeScript.