Похоже, вы пытаетесь создать строковое перечисление.TypeScript 2.4 теперь имеет строковые перечисления, поэтому ваш код просто работает:
enum E {
hello = "hello",
world = "world"
};
Или для более ранних версий TypeScript:
export const Enum = createStringEnum(["Prop1", "Prop2"]);
export type Enum = keyof typeof Enum;
function createStringEnum<T extends string>(keys: T[]): {[K in T]: K} {
return keys.reduce((res, key) => {
res[key] = key;
return res;
}, Object.create(null));
}
createStringEnum возвращает объект с ключами и значениями в виде строк, передаваемых вмассив.
и keyof typeof Enum;
эквивалентны "Prop1" |«Prop2».
Таким образом, вы можете использовать Enum для проверки типа и доступа к строковым значениям внутри объекта.