title: The type error about the return of mysql2/promise query
body: <p>I'm using the mysql2/promise library in typescript, however, I can't understand the type of the return of the query method, and I can't solve an error.<br>
  My code is below.<br></p>
  <pre><code>import * as mysql from &quot;mysql2/promise&quot;;
  
  let mysql_connection: mysql.Connection = await mysql.createConnection({
     //Some options here.
  });
  
  let backend_mysql_res: [(mysql.RowDataPacket[][] | mysql.RowDataPacket[] | mysql.OkPacket | mysql.OkPacket[] | mysql.ResultSetHeader), mysql.FieldPacket[]] = await mysql_connection.query(`SELECT * FROM data.table ORDER BY time DESC LIMIT 1`);
  
  //The error occurred this line. 
  console.log(backend_mysql_res[0][0]);
  </code></pre>
  <p>And the error message about the <code>backend_mysql_res[0][0]</code> in the last line of the above code is below.<br></p>
  <pre><code>TS7053: Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[] | ResultSetHeader'.   Property '0' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[] | ResultSetHeader'.
  </code></pre>
  <p>The error message above describes <code>type '0'</code>, however, what is the <code>type '0'</code>? Isn't this type number?<br>
  So, I can't find the solution to the problem.<br></p>
  <p>What are the proper types of the response of the query method of mysql2/promise?
  Furthermore, the above type specification of <code>let backend_mysql_res ...</code> is what I wrote according to the suggestion from the IDE. But I think this is a little too long. So is there a way to sophisticate code?<br></p>
  <p>I just began to learn the typescript these days.<br>
  Anyone who can help me.<br></p>