user269867
user269867

Reputation: 3972

A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type

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

Upvotes: 13

Views: 24226

Answers (1)

user3369753
user3369753

Reputation:

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;
}

Upvotes: 15

Related Questions