TypeScript 变量声明
变量是存放数据的命名容器。TypeScript 在 JavaScript 的 var/let/const 之上增加了类型注解,让每个变量在声明时就明确自己装什么类型的数据。
声明语法
基本写法为 let 变量名: 类型 = 值;,其中类型注解可省略(自动推断):
let count: number = 10; // 注解为 number
let name = "TypeScript"; // 省略注解,推断为 string
console.log(count, name); // 输出:10 TypeScript
var、let、const 的差异
| 关键字 | 作用域 | 可否重新赋值 | 可否重复声明 | 建议 |
|---|---|---|---|---|
| var | 函数作用域 | 可 | 可 | 尽量不用 |
| let | 块级作用域 | 可 | 不可 | 推荐 |
| const | 块级作用域 | 不可 | 不可 | 优先使用 |
块级作用域演示
let/const 只在所在 { } 块内有效,var 会穿透块:
if (true) {
var a: number = 1; // var:块外仍可访问
let b: number = 2; // let:仅块内可见
}
console.log(a); // 输出:1
// console.log(b); // 编译报错:找不到名称 b
重新赋值与常量
let 可以重新赋值,const 声明后不可再赋值:
let score: number = 90;
score = 95; // 合法
console.log(score); // 输出:95
const PI: number = 3.14159;
// PI = 3.0; // 编译报错:不能给常量重新赋值
console.log(PI); // 输出:3.14159
const 只禁止"重新绑定",不禁止修改对象内部属性(见对象一节)。
类型推断的细节
- 声明时赋值 → 推断为值类型。
- 声明不赋值 → 推断为 any(开启严格模式时会报错)。
let total = 100; // 推断 number
// total = "一百"; // 编译报错:类型不匹配
console.log(total); // 输出:100
解构赋值
从对象或数组中一次性取出多个值,配合类型注解更安全:
const point = { x: 10, y: 20 };
const { x, y }: { x: number; y: number } = point;
console.log(x, y); // 输出:10 20
const arr: number[] = [1, 2, 3];
const [first, , third] = arr; // 跳过第二个元素
console.log(first, third); // 输出:1 3
声明最佳实践
- 默认使用 const,需要重新赋值时才用 let,尽量不写 var。
- 变量声明即初始化,避免隐式 any。
- 命名用有意义的驼峰式,如 userAge 而非 a。
小结
变量声明记住三件事:类型注解写在冒号后、优先 const 按需 let、避开 var 的穿透陷阱。声明方式与类型系统配合,是写出健壮 TS 代码的第一步。