如何避免嵌套的打字稿 if 语句使用 let x: type |未定义 = 变量
how to avoid nested typescript if statements using let x: type | undefined = variable
有没有更好的方法来处理类型检查 | type2 当变量定义为类型 |类型2?例如,我有这个小代码片段:
if (e) {
let targetElement: Element | undefined = e.toElement;
if (targetElement) {
let medicineCategory: string | null = targetElement.textContent;
if (medicineCategory) {
$('#selected-medicine-info').text(medicineCategory);
}
}
}
在代码中对 !undefined 和 !null 进行大量检查似乎真的很不雅观,尤其是当它嵌套得更深时。
我选择了这个,读起来更好一些,我可以很容易地看出 textContent 的值为空:
let targetElement: Element | undefined = e.toElement;
if (targetElement) {
let medicineCategory: string | null = (targetElement.textContent !== null) ? targetElement.textContent : "null";
$('#selected-medicine-info').text(medicineCategory);
}
您可以使用 LoDash。 _.get
会自动进行错误处理。如果 e
是 null
/undefined
,或者如果路径不存在,它将只是 return 一个默认值。如果您不提供默认值,它将 return undefined
.
// _.get takes an `object`, `path`, and `default`. Typescript will infer
// that the type is `string`, because the default is an empty string
// (thanks Lodash)
const medicineCategory = _.get(e, ['toElement', 'textContext'], '');
if (medicineCategory)
$('#selected-medicine-info').text(medicineCategory);
在此处查看更多信息:https://lodash.com/docs/4.17.10#get
LoDash 是 npm 最依赖的库是有原因的。 (https://www.npmjs.com/ 见页面底部)。
有没有更好的方法来处理类型检查 | type2 当变量定义为类型 |类型2?例如,我有这个小代码片段:
if (e) {
let targetElement: Element | undefined = e.toElement;
if (targetElement) {
let medicineCategory: string | null = targetElement.textContent;
if (medicineCategory) {
$('#selected-medicine-info').text(medicineCategory);
}
}
}
在代码中对 !undefined 和 !null 进行大量检查似乎真的很不雅观,尤其是当它嵌套得更深时。
我选择了这个,读起来更好一些,我可以很容易地看出 textContent 的值为空:
let targetElement: Element | undefined = e.toElement;
if (targetElement) {
let medicineCategory: string | null = (targetElement.textContent !== null) ? targetElement.textContent : "null";
$('#selected-medicine-info').text(medicineCategory);
}
您可以使用 LoDash。 _.get
会自动进行错误处理。如果 e
是 null
/undefined
,或者如果路径不存在,它将只是 return 一个默认值。如果您不提供默认值,它将 return undefined
.
// _.get takes an `object`, `path`, and `default`. Typescript will infer
// that the type is `string`, because the default is an empty string
// (thanks Lodash)
const medicineCategory = _.get(e, ['toElement', 'textContext'], '');
if (medicineCategory)
$('#selected-medicine-info').text(medicineCategory);
在此处查看更多信息:https://lodash.com/docs/4.17.10#get
LoDash 是 npm 最依赖的库是有原因的。 (https://www.npmjs.com/ 见页面底部)。