Closed aeschli closed 7 years ago
The compiler is telling you that the right part of your ||
operation is never happening. It may be a bug, but you should add the definitions of nodes.HexColorValue
, nodes.Function
and nodes.Node
to be sure. Also, try to do a simplified version of the code and use text instead of images.
@ezequiel-umu Thanks for the reply. As mentioned, I was not able to reproduce the issue with a simplified version. I added links to the source code. But the steps to reproduce are also quite simple, see the description.
I didn't try to reproduce, but to me that looks like the problem you mentioned:
https://github.com/Microsoft/TypeScript/issues/12083
A bad decision making instanceof
a structural check at compile time IMHO.
TypeScipt 2.5.2
Sorry, I wasn't able to extract a simplified example:
git clone https://github.com/Microsoft/vscode-css-languageservice.git
cd vscode-css-languageservice
git checkout 73f8707
npm install
npm run compile
src/services/cssCompletion.ts(804,47) error TS2358: The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter.
link to cssCompletion.ts: 804It's a new error, not reported by a previous version of typescript. Both
nodes.HexColorValue
(link) andnodes.Function
(link) are classes that extend base classnodes.Node
(link). The way I see it, the instanceof test is valid code to test the runtime types of the object.Adding a brand field
_hexColorValue : void;
tonodes.HexColorValue
fixes the issue, so maybe this is related to #12083. At the very least the message should be improved, but IMO the error is invalid.