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直接赋值。

相关推荐

  1. typescript 泛型

    2023-12-09 04:32:01       33 阅读
  2. TypeScript 声明合并

    2023-12-09 04:32:01       27 阅读
  3. TypeScript tsconfig.json

    2023-12-09 04:32:01       26 阅读
  4. TypeScript数组类型

    2023-12-09 04:32:01       29 阅读
  5. TypeScript枚举

    2023-12-09 04:32:01       29 阅读
  6. TypeScript交叉类型

    2023-12-09 04:32:01       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-09 04:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-09 04:32:01       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-09 04:32:01       82 阅读
  4. Python语言-面向对象

    2023-12-09 04:32:01       91 阅读

热门阅读

  1. C\C++ 获取最值

    2023-12-09 04:32:01       51 阅读
  2. Auth模块的使用

    2023-12-09 04:32:01       48 阅读
  3. 【qml入门系列教程】:qml QtObject用法介绍

    2023-12-09 04:32:01       50 阅读
  4. 【POSTGIS】判定点位是否在范围内

    2023-12-09 04:32:01       49 阅读
  5. 雷军:我的程序人生路

    2023-12-09 04:32:01       50 阅读
  6. leetcode做题笔记1423. 可获得的最大点数

    2023-12-09 04:32:01       53 阅读
  7. mysql 表分区类型

    2023-12-09 04:32:01       58 阅读
  8. 微信小程序保存二维码的过程

    2023-12-09 04:32:01       64 阅读
  9. 策略产品经理常用的ChatGPT通用提示词模板

    2023-12-09 04:32:01       59 阅读
  10. 项目代码规范

    2023-12-09 04:32:01       58 阅读
  11. GUN编译器(gcc/g++)- 编译过程

    2023-12-09 04:32:01       50 阅读
  12. 十年婚姻·总结六

    2023-12-09 04:32:01       66 阅读
  13. 【C++ Primer Plus学习记录】逻辑表达式

    2023-12-09 04:32:01       52 阅读
  14. Codeforces Round 913 (Div. 3) (A-G)

    2023-12-09 04:32:01       43 阅读