对象可能是“未定义”打字稿

时间:2019-04-25 20:38:17

标签: javascript typescript

我正在尝试从对象访问值。但出现以下错误。

  

对象可能是“未定义”的打字稿

我的TypeScript代码:

import { SqlClient } from 'msnodesqlv8';

declare var require: any;

const sql: SqlClient = require('msnodesqlv8');

const connectionString =
  'server=.,1433;Database=emps;Trusted_Connection=Yes;Driver={SQL Server Native Client 11.0}';
const query = 'SELECT * FROM [dbo].[sample] WHERE id = 117';

sql.query(connectionString, query, (err, rows) => {
  console.log(rows);   // this works fine, but when i try to access its value using object key, it fails
  console.log(rows[0].Id);  // this fails
});

这在JavaScript中工作正常。 TypeScript的实现方式是什么。

1 个答案:

答案 0 :(得分:2)

您会收到此错误,因为如果rows数组不包含任何元素,那么rows[0]将是未定义的。两种可能的解决方案:

1)检查它是否确实有数据,例如

if (rows[0]) {
    console.log(rows[0].Id)
}

2)禁用strict中的strictNullCheckstsconfig.json选项(请参阅更多here)。这将使错误消失,但是如果实际上 是未定义的,则将收到运行时错误,因此,除非您绝对确定它将始终包含数据,否则您可能要检查该值。