在TypeScript中void、never、null和undefined有什么区别?何时使用?[duplicate]

8oomwypt  于 2022-12-30  发布在  TypeScript
关注(0)|答案(2)|浏览(105)
    • 此问题在此处已有答案**:

What is the difference between null and undefined in JavaScript?(38个答案)
What is the difference between never and void in typescript?(10个答案)
2天前关闭。
此帖子已在2天前编辑并提交审核,无法重新打开帖子:

    • 重复**此问题已回答,不是唯一的,并且与其他问题没有区别。

我想知道TypeScript中这四种类型之间的区别,以及如何使用它们的一些实际示例。请不要将我的问题标记为与this重复,因为我讨论的是编译时的TypeScript类型**,而不是Javascript值。

nbysray5

nbysray51#

  1. undefined表示变量尚未定义
function foo(bar?: number) {
  console.log(bar) // prints undefined
}

undefined类型是只有一个值undefined的基元类型。

  1. null值表示有意缺少任何对象值。
    null使用以下文字编写:nullnull不是全局对象属性的标识符,而undefined可以是。相反,null表示缺少标识,表示变量不指向任何对象。在API中,null通常在可以预期对象但没有相关对象的位置检索。
  2. voidundefined非常相似。它也是包含单个undefined值的类型。但它在函数返回类型中有特殊含义。并且在类型兼容性方面工作方式略有不同
    void的目的是函数的返回值不会被观察到,这与would be undefined非常不同
  3. never表示具有此返回类型的函数永远无法正常返回。这意味着引发异常或无法终止。never是不包含值的类型
5fjcxozz

5fjcxozz2#

undefined是不返回任何内容的函数的默认返回类型,在这种情况下,建议将返回类型设置为void
null是与任何其他类型相同的类型,示例

const firstZero = (array : number []) : number | null => {
var indexToReturn = null
array.every((value)=>{
if(value == 0 ) {
indexToReturn = array.indexOf(value);
return false; //this return is for the every loop (if false the loop stops)
}else {
return true; //this return is for the every loop (if true the loop continue)
}
})
return indexToReturn 
}

never表示函数永远不会到达返回点,示例

const error = (msg: string) : never => {
throw new Error(msg);
}

相关问题