基本类型
let name: string = "dolphin";
let age: number = 22;
let isSingle: boolean = true;
let u: undefined = undefined; // 表示变量尚未被赋值
let n: null = null; // 显示将值设为空
null 和 undefined
null 和 undefined 可以赋值给任何类型,此时可以理解为它们是所有类型的子类型。如果你在 tsconfig.json 中开启了 strictNullChecks 选项,null 和 undefined 只能赋值给 void 或它们各自的类型。
void 类型
void 类型通常用于函数没有返回值的情况,它表示没有任何类型
function logMessage(message: string): void {
console.log(message);
}
any 类型
any 类型表示任意类型。使用 any 类型的变量可以赋值为任何类型的值,且不会进行类型检查。这在需要兼容动态类型的代码时有用,但滥用 any 会导致类型安全性丧失。
unknown 类型
unknown 类型是一个更安全的 any 类型。与 any 不同,在将 unknown 类型赋值给其他类型之前,必须先进行类型检查或类型断言
使用之前你若不进行类型检查或类型断言就会报错
function processValue(value: unknown) {
if (typeof value === "string") {
console.log(`String value: ${value}`);
}
else if (typeof value === "number") {
console.log(`Number value: ${value}`);
}
else if (typeof value === "object" && value !== null) {
console.log("Object value:", value);
}
else {
console.log("Unknown type");
}
}
processValue("Hello, world!"); // 输出: String value: Hello, world!
processValue(42); // 输出: Number value: 42
processValue({ id: 1 }); // 输出: Object value: { id: 1 }
processValue(true); // 输出: Unknown type
never 类型
never 类型表示永远不会有值的类型。通常用于表示那些总是会抛出错误或不会有返回值的函数。因此被赋值会报错,哪怕是 any
function error(message: string): never {
throw new Error(message);
}
函数类型(Function Type)
函数类型用于定义函数的参数类型和返回类型。
function add(x: number, y: number, z?:number): number {
return x + y;
}
// 函数类型表达
let addFunc: (a: number, b: number) => number;
addFunc = add;
(a: number, b: number) => number 意思是接受两个 number 参数并返回 number 类型值的函数,要是函数没有 return,就相当于返回 void 类型。参数若是可选,用 ? 表示,这里一定要注意可选参数都是放参数最后的,否则报错。默认参数还是用 = ,和 js 一致,且无关顺序
数组类型(Array Type)
数组类型用于定义一组相同类型的元素,不相同就是接下来的元组类型
let numbers: number[] = [1, 2, 3, 4]; // ‘1’ 也会报错
let strings: string[] = ["hello", "world"];
或者可以使用泛型语法定义数组:<> 符号就表示泛型
let numbers: Array<number> = [1, 2, 3, 4];
元组类型(Tuple Type)
元组类型用于表示已知数量和类型的元素的数组。与数组类型不同,元组中的每个元素类型可以不同。
let tuple: [string, number, boolean] = ["hello", 42, true];
元组的长度是固定的,并且每个位置上的类型是确定的。这在需要表示固定结构的数据时非常有用,例如函数返回多个值的情况。当 push 的元素超出时类型必须是已有的
枚举类型(Enum Type)
枚举类型是用于定义一组命名常量的方式,可以用于表示一组相关的值。
enum Direction {
Up,
Down,
Left,
Right
}
let dir: Direction = Direction.Up;
console.log(Direction.Up, Direction.Down, Direction.Left, Direction.Right); // 0, 1, 2, 3
console.log(Direction[0], Direction[1], Direction[2], Direction[3]); // Up Down Left Right
枚举的值可以是数字或字符串,默认情况下,从 0 开始自动递增。也可以自定义枚举的值:
enum StatusCode {
Success = 200,
NotFound = 404,
ServerError = 500
}