gpt4 book ai didi

javascript - typescript 错误对象可能为空?为什么,如何禁用?

转载 作者:行者123 更新时间:2023-11-30 07:50:36 25 4
gpt4 key购买 nike

我有以下代码:

private extractInitials(fullname: string): string {
const initials = fullname
.replace(/[^a-zA-Z- ]/g, '')
.match(/\b\w/g)
.join('')
.toUpperCase();
return initials.substring(0, 2);
}

我遇到了一个错误 enter image description here

[ts] 对象可能为“空”。 [2531]

所以我试过了if fullname { const initials .... return ... } else return '';

原来 typescript 在提示这个人

fullname.replace(/[^a-zA-Z- ]/g, '')

这是有道理的,因为这最终可能是一个空字符串

我也是这样

const t = fullname.replace(/[^a-zA-Z- ]/g, '')
if(t) { /* do the rest */ } else return ''

它仍然给我这个对象可能是空的错误。我知道不是。我该如何解决?

最佳答案

问题是 match 可以返回 null。如果您想要一个空字符串作为结果,只需使用 || 技巧¹来执行 || []关于匹配的结果:

private extractInitials(fullname: string): string {
const initials =
(fullname
.replace(/[^a-zA-Z- ]/g, '')
.match(/\b\w/g)
|| []
)
.join('')
.toUpperCase();
return initials.substring(0, 2);
}

如果你想在这种情况下返回 null,你可以使用 && 技巧¹来返回 null 如果 match 结果为 null,否则继续您的 join 等:

private extractInitials(fullname: string): string {
const parts = fullname
.replace(/[^a-zA-Z- ]/g, '')
.match(/\b\w/g);
return parts && parts.join('').toUpperCase().substring(0, 2);
}

¹ || 技巧是 || 评估其左侧操作数,如果它是 truthy²,则将该值作为结果;否则,它计算其右侧操作数并将该值作为结果。 && 技巧类似,只是反过来:它评估其左侧操作数,如果它是falsy³,则将该值作为其结果;否则,它会评估其右侧操作数并将该值作为结果。

² falsy - null, undefined, "", 0, NaN,或者(当然)false

³ 真实 - 不虚假

关于javascript - typescript 错误对象可能为空?为什么,如何禁用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53729238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com