请问一下关于typescript的基础用法

这个函数要怎样写才不会报错啊?

阅读 1.7k
4 个回答

这个和Typescript没什么关系吧。

value.match(/a/g)?.length ?? 0

@IanSun 的回答能解决问题,但是个人觉得可以再改进一下

你既然已经做了判断,就不该再用?? 0 来处理了,执行效率变低

// 上策:
const matches = value.match(/a/g);
matches ? matches.length : 0;

// 中策:
const matches = value.match(/a/g);
matches?.length || 0;

// 下策:
value.match(/a/g) ? value.match(/a/g)!.length : 0

这里面加?.说明你有可能取值为undefined,等价于value.match(/a/g) && value.match(/a/g).length

image.png

const matches = value.match(/a/g) as string[]; // 是否可以加个断言呢?
function test(str: string) {
    const result = str.match(/./)
    return str.length - (result ? result.length : 0)
}

typescript 是对第二次match做的判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题