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

声明最佳实践

  1. 默认使用 const,需要重新赋值时才用 let,尽量不写 var。
  2. 变量声明即初始化,避免隐式 any。
  3. 命名用有意义的驼峰式,如 userAge 而非 a。

小结

变量声明记住三件事:类型注解写在冒号后、优先 const 按需 let、避开 var 的穿透陷阱。声明方式与类型系统配合,是写出健壮 TS 代码的第一步。

笔记加载中…