最新看了 element-plus的源码,发现里面有一行注释
/**
* @deprecated stop to use null
* @see {@link https://github.com/sindresorhus/meta/discussions/7}
*/
export type Nullable<T> = T | null
在 js 中停止使用 null 。。。 感觉很有意思, 可以直接点击其中的链接查看
为什么要停止使用 null ???
js默认的空指定的是 undefined
- 当我们访问一个对象中不存在的属性时,返回的就是
undefined - 在类型的定义上,js的默认初始值 和 默认返回值 都让 null 对比 undefined 显得有些多余
type fn = (count?: number) => void;
type fn2 = (count?: number | null) => void;
//
const obj = {};
let a:null | number;
a = obj[a]; // 类型错误
- 在 es6+ 语法中在进行对象解构的时候,如果属性的值为 null 时 我们将无法进行默认值的赋值
const obj = {a: null};
const {a = 'a', b = 'b'} = obj;
console.log(a,b); // null , 'b'
- typeof null === 'object'
不支持 undefined 的场景
- json 中不支持 undefined
- 浏览器 和 node 的 api 中 使用的是null作为返回值或者空类型
如何避免去使用 null ?
- 在我们自己书写的 code 中尽量使用 undefined
- 使用 eslint 去检查
- 自定义 JSON.parse/stringify