печатать перечисление как машинописный текст - PullRequest
0 голосов
/ 17 марта 2019

Мое перечисление:

enum VerificationStatus {
    pending, 
    rejected, 
    verified
}

Я пытаюсь напечатать перечисление в следующем формате:

console.log(myEnumtoString(VerificationStatus.pending))

следует напечатать строку

"VerificationStatus.pending"

Iпробовал:

console.log(`${typeof VerificationStatus}.${VerificationStatus[VerificationStatus.pending]}`)

Но я получаю это:

"object.pending"

Ответы [ 3 ]

0 голосов
/ 17 марта 2019

определите ваше перечисление следующим образом

enum VerificationStatus {
    pending='pending', 
    rejected='rejected', 
    verified='verified'
}
0 голосов
/ 17 марта 2019

Для этого вам понадобится трансформатор как ts-nameof.

Использование:

nameof.full(VerificationStatus.pending); // "VerificationStatus.pending"
0 голосов
/ 17 марта 2019

Это может сработать, но это немного неуклюже:

console.log(`${Object.keys({VerificationStatus})[0]}.${VerificationStatus[VerificationStatus.pending]}`)

TypeScript компилирует перечисления в переменные со значениями в качестве свойств и сопоставлением имен и индексов значений.

Это означает кодвыше использует это внутреннее знание, чтобы напечатать имя переменной, в которую скомпилировано перечисление.Он хрупкий, и я бы не рекомендовал его использовать.

Поскольку у TypeScript нет официального способа получения имени перечисления, я просто напечатал бы его явно:

console.log(`VerificationStatus.${VerificationStatus[VerificationStatus.pending]}`)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...