How to fix ‘instanceof’ in TypeScript give me the error “‘Foo’ only refers to a type, but is being used as a value here.” error?

Sometimes, we want to fix ‘instanceof’ in TypeScript give me the error “’Foo’ only refers to a type, but is being used as a value here.” error.

In this article, we’ll look at how to fix ‘instanceof’ in TypeScript give me the error “’Foo’ only refers to a type, but is being used as a value here.” error.

How to fix ‘instanceof’ in TypeScript give me the error “’Foo’ only refers to a type, but is being used as a value here.” error?

To fix ‘instanceof’ in TypeScript give me the error “’Foo’ only refers to a type, but is being used as a value here.” error, we should only use instanceof with constructors.

For instance, we write

interface Foo {
  abcdef: number;
}

let x: Foo | string;

if ('abcdef' in x) {
  // ...
}

to create the Foo instance.

And we check if x implements Foo with 'abcdef' in x.

If the abcdef property is in x, then we know x is a Foo object since strings don’t have the abcdef property and x is either a Foo object or a string.

Conclusion

To fix ‘instanceof’ in TypeScript give me the error “’Foo’ only refers to a type, but is being used as a value here.” error, we should only use instanceof with constructors.