前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TypeScript-去除null和?developer/article/2334191/undefined检测

TypeScript-去除null和?developer/article/2334191/undefined检测

原创
作者头像
杨不易呀
发布2023-09-28 19:32:25
3370
发布2023-09-28 19:32:25
举报
文章被收录于专栏:杨不易呀杨不易呀

前言

先不管三七二十一,首先来看一个函数的定义,该函数的内部返回了一个函数的回调,主要作用就是获取一个字符串的长度,可是呢函数的入参是一个联合类型,如下:

代码语言:typescript
复制
function getLength(value: (string | null | ?developer/article/2334191/undefined)) {
    value = 'abc';
    return () => {
        return value.length;
    }
}

报错的原因就是说,该函数的入参呢,有可能是 null 和 ?developer/article/2334191/undefined 如果是 null 和 ?developer/article/2334191/undefined 就没有 .length 这个属性所以编译器就会报错,那么这个问题呢,在之前是利用 || 进行解决的解决代码如下:

代码语言:typescript
复制
function getLength(value: (string | null | ?developer/article/2334191/undefined)) {
    value = 'abc';
    return () => {
        return (value || '').length;
    }
}

let fn = getLength('yangbuyiya');
let res = fn();
console.log(res);

除了如上的方式进行解决以外,还有一种百试不爽的方式就是使用类型断言:

代码语言:typescript
复制
function getLength(value: (string | null | ?developer/article/2334191/undefined)) {
    value = 'abc';
    return () => {
        return (value as string).length;
    }
}

let fn = getLength('yangbuyiya');
let res = fn();
console.log(res);

如上除了使用类型断言以外,还可以使用类型断言的简写方式来进行简化代码, 类型断言的简写方式就是在变量的后面加一个感叹号 !! 的含义就是告诉编译器,这个变量一定不是 null?developer/article/2334191/undefined

代码语言:typescript
复制
function getLength(value: (string | null | ?developer/article/2334191/undefined)) {
    value = 'abc';
    return () => {
        return value!.length;
    }
}

let fn = getLength('yangbuyiya');
let res = fn();
console.log(res);

最后

本期结束咱们下次再见?~

? 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ ?

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

输入图片说明
输入图片说明

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com