如何在分配给变量之前检查未定义
How to check for undefined before assigning to variable
我正在使用查找方法来提取 ID(字符串),但这返回了一个未定义的值,因为它不存在。
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id;
产品有以下:
(2) [ProductInventoryList, ProductInventoryList]
0: ProductInventoryList {_id: "12345", _name: "lineaFija", _productInventoryCharacteristics: ProductInventoryCharacteristics}
1: ProductInventoryList {_id: "12345", _name: "primeraLinea", _productInventoryCharacteristics: ProductInventoryCharacteristics}
length: 2
所以没有返回“segundaLinea”,所以查找给出了以下错误:
ERROR 错误:未捕获(承诺):TypeError:无法读取未定义的 属性 'id'
类型错误:无法读取未定义的 属性 'id'
我试过这样做但没有用:
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id ? undefined : '';
我错过了什么?
试试下面的遮阳篷:
您可以这样使用 optional chaining:
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea')?.id;
编辑:
对于 Typescript,version 3.7 添加了对可选链接的支持。如果你不能更新你的版本,你必须在多行上做:
const segundaLinea = products.find(product => product.name === 'segundaLinea');
const additionalLinePhoneNumber = segundaLinea ? segundaLinea.id : "";
如果你必须多次执行此操作,你可能应该编写一个辅助函数。
我正在使用查找方法来提取 ID(字符串),但这返回了一个未定义的值,因为它不存在。
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id;
产品有以下:
(2) [ProductInventoryList, ProductInventoryList]
0: ProductInventoryList {_id: "12345", _name: "lineaFija", _productInventoryCharacteristics: ProductInventoryCharacteristics}
1: ProductInventoryList {_id: "12345", _name: "primeraLinea", _productInventoryCharacteristics: ProductInventoryCharacteristics}
length: 2
所以没有返回“segundaLinea”,所以查找给出了以下错误:
ERROR 错误:未捕获(承诺):TypeError:无法读取未定义的 属性 'id' 类型错误:无法读取未定义的 属性 'id'
我试过这样做但没有用:
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id ? undefined : '';
我错过了什么?
试试下面的遮阳篷:
您可以这样使用 optional chaining:
const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea')?.id;
编辑:
对于 Typescript,version 3.7 添加了对可选链接的支持。如果你不能更新你的版本,你必须在多行上做:
const segundaLinea = products.find(product => product.name === 'segundaLinea');
const additionalLinePhoneNumber = segundaLinea ? segundaLinea.id : "";
如果你必须多次执行此操作,你可能应该编写一个辅助函数。