**TypeScript基本类型检查**
2024-01-14 21:35:56
TypeScript基本类型检查
TypeScript是一种静态类型语言,这意味着它会在编译时检查类型错误,而不是在运行时。这可以帮助您在代码中及早发现错误,从而减少调试时间并提高代码质量。
数据类型
TypeScript支持多种数据类型,包括:
- 数字:整数和小数
- 字符串:由引号或反引号括起来的一系列字符
- 布尔值:true或false
- null:表示空值
- undefined:表示未定义的值
- Symbol:表示唯一标识符
变量声明
变量声明用于在TypeScript中声明变量。变量声明包括变量名、类型和值。例如:
let name: string = "John Doe";
这将声明一个名为name的变量,其类型为string,并将其值设置为"John Doe"。
空类型检查
TypeScript中的空类型检查可以确保变量不会被赋予null或undefined值。要启用空类型检查,您需要在tsconfig.json文件中将strictNullChecks选项设置为true。
例如:
{
"compilerOptions": {
"strictNullChecks": true
}
}
启用空类型检查后,您将无法将null或undefined值赋给变量。例如,以下代码将导致编译错误:
let name: string = null;
联合类型
联合类型允许变量存储多种类型的值。例如,以下代码声明了一个名为age的变量,其类型为number或string:
let age: number | string = 25;
这允许您将数字或字符串值赋给age变量。
交叉类型
交叉类型允许您创建由多个类型组成的复合类型。例如,以下代码声明了一个名为Person的类型,该类型具有name和age属性:
type Person = {
name: string;
age: number;
};
您可以使用交叉类型来创建更复杂的数据结构。
元组
元组是一种有序的元素集合。元组中的元素可以具有不同的类型。例如,以下代码声明了一个名为employee的元组,该元组包含一个名字和一个年龄:
let employee: [string, number] = ["John Doe", 25];
您可以使用元组来存储各种类型的数据。
枚举
枚举是一种用于表示一组相关常量的类型。例如,以下代码声明了一个名为Color的枚举,该枚举包含red、green和blue三个常量:
enum Color {
red,
green,
blue
}
您可以使用枚举来创建更易读和更易维护的代码。
类
类是一种用于创建对象的模板。类可以包含属性、方法和构造函数。例如,以下代码声明了一个名为Person的类:
class Person {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log("Hello, my name is " + this.name);
}
}
您可以使用类来创建对象并调用其方法。
接口
接口是一种用于定义对象形状的类型。接口可以包含属性、方法和构造函数。例如,以下代码声明了一个名为Person的接口:
interface Person {
name: string;
age: number;
greet(): void;
}
您可以使用接口来创建对象并确保其具有正确的属性和方法。
类型别名
类型别名允许您为现有类型创建一个新的名称。例如,以下代码声明了一个名为MyString的类型别名,该类型别名与string类型相同:
type MyString = string;
您可以使用类型别名来创建更易读和更易维护的代码。
类型保护
类型保护允许您检查变量的类型并执行不同的代码。例如,以下代码使用typeof运算符来检查age变量的类型:
if (typeof age === "number") {
console.log("Age is a number");
} else if (typeof age === "string") {
console.log("Age is a string");
}
您可以使用类型保护来确保您只对正确类型的变量执行代码。
条件类型
条件类型允许您根据变量的类型创建新的类型。例如,以下代码声明了一个名为IsNumber的条件类型,该条件类型检查变量是否为number类型:
type IsNumber<T> = T extends number ? true : false;
您可以使用条件类型来创建更灵活和更可重用的代码。
泛型
泛型允许您创建可重用的组件,这些组件可以与任何类型一起使用。例如,以下代码声明了一个名为MyArray的泛型类,该类可以存储任何类型的数据:
class MyArray<T> {
private data: T[];
constructor(...