TypeScripe笔记:any、unknown、never、void、null 和 undefined 及其比较
在 TypeScript 中,any
、unknown
、never
、void
、null
和 undefined
都有其特定的用途和区别。以下是对这些类型的简单比较和使用示例:
any
:- 可以赋予任何类型的值。
- 使用时需要小心,因为这将关闭大多数类型检查。
示例:
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // 也可以是布尔值
unknown
:- 类似于
any
,但是比any
更安全,因为它不能直接赋值给其他类型,除非进行类型检查。 示例:
let maybeNumber: unknown = Math.random() > 0.5 ? 4 : "hello"; // 使用类型检查 if (typeof maybeNumber === "number") { console.log(maybeNumber); // 在类型检查后,maybeNumber 可以被当作 number 类型 }
- 类似于
never
:- 表示的类型 never 没有值。
- 这通常是返回类型,表示函数不会结束或者是某个永远不会达到的代码分支。
示例:
function error(message: string): never { throw new Error(message); } // 返回值为 never 的函数必须抛出错误 function infiniteLoop(): never { while (true) {} }
void
:- 表示没有任何类型,即没有返回值的函数应该声明为
void
类型。 示例:
function log(): void { console.log("Hello"); }
- 表示没有任何类型,即没有返回值的函数应该声明为
null
和undefined
:null
和undefined
是基本类型,分别有自己的类型Null
和Undefined
。- 默认情况下,TypeScript 允许你给变量赋值
null
或undefined
。 示例:
let n: null = null; let u: undefined = undefined;
比较:
any
是一个超类型,它可以赋值给任何类型。void
是一个类型,表示没有任何返回值。never
是一个类型,表示永远不会发生的值。unknown
是一个类型,它不确定它是什么类型,但是可以赋值给any
类型。null
和undefined
是基本类型,可以直接赋值给它们相应的变量。
评论已关闭