如何在分配给变量之前检查未定义

问题描述 投票:0回答:2

我使用 find 方法来提取 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”未返回,因此查找给出了以下错误:

错误错误:未捕获(承诺中):类型错误:无法读取未定义的属性“id” 类型错误:无法读取未定义的属性“id”

我尝试这样做但不起作用:

const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea').id ? undefined : '';

我错过了什么?

尝试下面的遮阳篷:

typescript angular5
2个回答
2
投票

您可以像这样使用可选链

const additionalLinePhoneNumber = products.find(product => product.name === 'segundaLinea')?.id;

编辑:

对于 Typescript,在 3.7 版本中添加了对可选链的支持。如果您无法更新版本,则必须在多行上进行更新:

const segundaLinea = products.find(product => product.name === 'segundaLinea'); const additionalLinePhoneNumber = segundaLinea ? segundaLinea.id : "";
如果您必须多次执行此操作,您可能应该编写一个辅助函数。


0
投票
如果你不想更新,只需可选(?)链接

const segundaLinea = products.find(product => product?.name === 'segundaLinea');
const extraLinePhoneNumber = segundaLinea?.id;

© www.soinside.com 2019 - 2024. All rights reserved.