any 类型表示任意类型,可以赋予任意类型的值。例如:let notSure: any = 6; notSure = 'I am string'; notSure = false;
unknown 类型与 any 类型类似,但更安全,因为在对 unknown 类型的值进行操作之前,需要先进行类型判断。例如:
let value: unknown; value = true; value = 42; value = 'hello'; if (typeof value === 'string') { console.log(value.toUpperCase()); }
void 类型表示没有任何返回值的函数返回值类型。例如:
function warnUser(): void { console.log('This is a warning message'); }
元组(Tuple)类型用来表示一个已知元素数量和类型的数组,各元素的类型不必相同。例如,你可以定义一个元组,它包含一个 string 类型元素和一个 number 类型元素:
let tuple: [string, number]; tuple = ['hello', 123]; // OK tuple = [123, 'hello']; // Error
在上面的例子中,我们定义了一个名为 tuple的元组类型变量,它包含两个元素,第一个元素的类型为 string,第二个元素的类型为 number。当我们给 tuple 赋值时,需要提供两个元素,并且元素的类型需要与定义时指定的类型一致。
我们可以像访问数组中的元素一样访问元组中的元素,例如:
let tuple: [string, number] = ['hello', 123]; console.log(tuple[0]); // 输出 'hello' console.log(tuple[1]); // 输出 123
ts函数类型
在 TypeScript 中,函数类型用于定义函数的参数类型和返回值类型。 定义函数的规则如下图:
函数重载是指根据参数的类型执行不同的函数。多数用于传入不同的参数得到不同的结果。重载分为两个部分(缺一不可):声明和实现。
举个例子,假设我们有一个函数,可以接收string类型相拼接,也可以接收number类型相加。
有一个函数叫做double,它可以接收number类型并返回它的两倍,也可以接收string类型并返回它与自身拼接的结果。代码如下:
function double(x: number): number; function double(x: string): string; function double(x: number | string): number | string { if (typeof x === 'number') { return x * 2; } else { return x + ', ' + x; } } let d = double(1);