带你读《现代TypeScript高级教程》二、类型(1)https://developer.aliyun.com/article/1348570?groupCode=tech_library
8.Any
当你不确定一个变量应该是什么类型的时候,你可能需要用到 any 类型。any类型的变量允许你对它进行任何操作,它就像是TypeScript类型系统的一个逃生窗口:
let notSure: any = 4; notSure = "maybe a string instead"; notSure = false; // okay, definitely a boolean
9.Unknown
unknown类型是TypeScript 3.0中引入的一种新类型,它是any类型对应的安全类型。unknown类型的变量只能被赋值给any类型和unknown类型本身:
let value: unknown; value = true; // OK value = 42; // OK value = "Hello World"; // OK value = []; // OK value = {}; // OK
10.Never
never类型表示的是那些永不存在的值的类型。例如,never类型是那些总是会抛出异常或者根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型:
function error(message: string): never { throw new Error(message);}
11.void
在TypeScript中,void类型用于表示没有返回值的函数的返回类型。在JavaScript中,当一个函数没有返回任何值时,它会隐式地返回undefined。void类型就是用来表达这种情况的:
function warnUser(): void { console.log("This is my warning message");}
在这个例子中,warnUser函数没有返回任何值,所以它的返回类型是void。
需要注意的是,在TypeScript中,你可以声明一个void类型的变量,但是你只能为它赋予undefined和null(在非严格null检查模式下):
let unusable: void = undefined;
通常情况下,我们不会这样使用void类型,因为除了undefined和null之外,你不能将任何值赋给void类型的变量。
12.联合类型(Union Types)
TypeScript联合类型是一种将多种类型组合到一起的方式,表示一个值可以是多种类型之一。你可以使用管道符(|)来分隔每个类型。这可以让你在不确定一个值是什么类型的时候,为它选择多个可能的类型。
例如,假设我们有一个函数,这个函数的参数可以是number类型或者string类型:
function display(input: string | number) { console.log(input);}
在上面的函数中,我们声明了input参数可以是string类型或者number类型。你可以传递一个string类型或者number类型的值给display函数,而TypeScript编译器不会报错:
display(1); // OK display("Hello"); // OK
你也可以将联合类型用于变量和属性。例如:
let variable: string | number; variable = "Hello"; // OK variable = 1; // OK
在上面的代码中,我们声明了variable可以是string类型或者number类型。然后我们可以安全地将一个字符串或者数字赋值给variable。
联合类型在TypeScript中非常常用,因为它们可以帮助你编写更灵活的代码。
带你读《现代TypeScript高级教程》二、类型(3)https://developer.aliyun.com/article/1348568?groupCode=tech_library