8
votes

I have following type definition

[Symbol(level)]?: string;

I have tried

importing level from winston and change the type to string|symbol but it doesn't resolve the problem.

It keep giving me following error "A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type."

any clue? any pointer is helpful

1

1 Answers

10
votes

Your symbol level needs to be defined as a unique symbol, like so:

const level: unique symbol = Symbol();

Then modify your interface like this:

interface MyInterface {
    [level]?: string;
}