变量声明
在 TypeScript 中,变量声明遵循一定的规则和语法,以确保变量的类型安全。以下是几种主要的变量声明方式及其特点:
- 基础声明
基本的变量声明与 JavaScript 相似,但可以加上类型注解来指定变量的类型。
ts
let name: string = "Alice"; // 声明一个字符串类型的变量
let age: number = 30; // 声明一个数字类型的变量
let isStudent: boolean = true; // 声明一个布尔类型的变量- 类型推断
TypeScript 会尝试自动推断变量的类型。如果在声明时未指定类型,且初始化了变量,TypeScript 会根据初始值推断类型。
ts
let name = "Bob"; // TypeScript 推断 name 为 string 类型- const 和 let
- let:用于声明一个可以在其作用域内重新赋值的变量。
- const:用于声明一个在其作用域内不可重新赋值的常量。必须在声明时初始化。
ts
let score = 85;
score = 90; // 允许重新赋值
const pi = 3.14; // 必须初始化,之后不能更改- 接口与类型别名
使用接口(interface)或类型别名(type)定义复杂的类型,然后在变量声明时引用这些类型。
ts
interface User {
id: number;
name: string;
}
type ComplexType = number | string | boolean;
let user: User = { id: 1, name: "Charlie" };
let complexValue: ComplexType = "TypeScript";- 可选类型与默认值
- 可选类型:在类型后面加 ? 表示该属性是可选的。
- 默认值:在变量声明时可以直接赋予默认值。
ts
function greet(name: string, greeting?: string) {
if (greeting) {
console.log(greeting + ", " + name);
} else {
console.log("Hello, " + name);
}
}
greet("Bob"); // greeting 参数是可选的- 联合类型与枚举
- 联合类型:使用 | 分隔,表示变量可以是多个类型之一。
- 枚举(enum):定义一组命名的常量。
ts
let favoriteColor: "red" | "blue" | "green" = "blue"; // 联合类型
enum Color {
Red,
Green,
Blue,
}
let selectedColor: Color = Color.Green; // 枚举类型- any 和 unknown
- any:允许变量为任意类型,但会放弃类型检查。
- unknown:与 any 类似,但更安全,需要类型断言或检查才能使用。
ts
let anyValue: any = "text";
anyValue = 123; // 允许类型改变
let unknownValue: unknown = "test";
let sureString: string = unknownValue as string; // 使用类型断言