Skip to content
Advertisement

How can I narrow down a return type to a more specific type in typescript?

This came up when working with the mysql2/promise library in TypeScript.

Consider the following (abbreviated) Snippet:

JavaScript

From the semantics of my query, I know for a fact that in this specific case the return type will indeed be [RowDataPacket,FieldPacket[]], but TypeScript does not allow that assignment because it is of course formally wrong.

The case where formally a number of types could apply, but semantically only one of them or a subset thereof are possible in any given situation can’t be that rare, so I assume there must be a solution.

How can I tell TypeScript to expect a subset of the theoretically possible types, preferably without resorting to any or ts-ignore?

Advertisement

Answer

You can type cast the result using the as operator.

JavaScript
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement