Хотя это и не прямой ответ на вопрос как таковой (поскольку он присваивает не enum, а производный тип), я обнаружил, что это решает мою проблему, позволяющую мне присвоить string
и гарантирует, что это является частью перечисления, и даже позволяет мне избежать лишнего A = "A"
, когда все, что действительно имеет значение, это A
.
Вы можете использовать keyof
[1] для перечисления свойств в typeof
перечислении (Foo
)
enum Foo {
A,
B
}
var foo : keyof typeof Foo = "A"; // OK
var foo : keyof typeof Foo = "C"; // ERROR
Или для объектов:
interface Bar {
type: keyof typeof Foo
}
let obj: Bar = {
type: "A" // OK
}
[*] Я будупометьте один из других ответов как принятый и сохраните его здесь для справки