TypeScript中的undefined,void,null

一. 概览

void是一个操作符,用于将任何表达式转换为undefined。它的语法如下:

void expression

例如,void(0)将返回undefined。
undefined是一个全局变量,表示未定义或未赋值,可以被覆盖。如果变量声明了但未初始化,则该变量的默认值为undefined。在函数中,如果您已声明但未返回任何值,则默认返回undefined。

null是一个表示无值或空值的JavaScript原始值,与未定义和未赋值的区别。null意味着对象不包含任何值。如果要显式设置变量或属性不含任何值,可以将其设置为null。

它们在应用上有很多差异。例如,当检查变量是否被定义或初始化时,通常使用undefined。当将变量或属性显式设置为空时,通常使用null。而在某些情况下,使用void来避免不必要的返回值或防止用户单击链接后跳转到新页面。

二. void和undefined

void 后面接任何数据 返回都是undefined
undefined

  1. 可以作为一种类型
  2. 类型为undefined的值
  3. undefined可以作为js变量
  4. window.undefined只读(IE7/8是可写的)
function test() {
    let undefined = 3;
    return undefined
}
console.log(test()) // 3

可以用void代替

function test() {
    let undefined = 3;
    return void(0)
}
console.log(test())

三、undefined和null在ts中使用

  1. undefined
    直接赋值
let x = undefined;
x =1

此时x推断成any类型

let x:undefined = undefined
x=3

编译报错:不能将类型“3”分配给类型“undefined”
undefined的本质是一个变量定义但是没有赋值,如果let x:undefined = undefined这种方式赋值之后,就不能赋值成其它类型。

void使用也是如此

let x:undefined = void(0)
x=3

同样地 let x:null = null也是对类型进行了限制,就不能赋值其它类型

上述例子总结:

  1. x是any类型,是因为undefined是js类型中默认的空值占位符;
  2. 如果类型推断为unddefined类型,会使后续赋值类型不匹配;
  3. ts环境不可能将undefined或者null直接赋值。

你可能感兴趣的:(TypeScript,typescript,前端)