我正在尝试从对象访问值。但出现以下错误。
对象可能是“未定义”的打字稿
我的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的实现方式是什么。
答案 0 :(得分:2)
您会收到此错误,因为如果rows
数组不包含任何元素,那么rows[0]
将是未定义的。两种可能的解决方案:
1)检查它是否确实有数据,例如
if (rows[0]) {
console.log(rows[0].Id)
}
2)禁用strict
中的strictNullChecks
或tsconfig.json
选项(请参阅更多here)。这将使错误消失,但是如果实际上 是未定义的,则将收到运行时错误,因此,除非您绝对确定它将始终包含数据,否则您可能要检查该值。>