柳嘉希

硕士研究生毕业生

软件工程师 | 可扩展的API · 网络爬虫 · 数据集成 · Vibe代码清理专家

TypeScript 基础:为什么需要类型、编译与变量声明

TypeScript 的核心价值是把一部分错误提前到代码运行之前发现。JavaScript 很灵活,但也容易在运行时才暴露问题,例如变量类型变化、对象属性不存在、函数参数不符合预期。TypeScript 通过静态类型检查减少这类运行时异常。

编译与类型检查

TypeScript 代码通常不会直接在浏览器或 Node.js 中运行,而是先经过编译,转换成 JavaScript。这个过程中,编译器会检查类型是否合理。

需要注意的是,类型检查主要发生在开发和构建阶段;运行时执行的仍然是 JavaScript。

变量声明

现代 TypeScript/JavaScript 中优先使用 letconst

let count: number = 10;
count = 20;
 
const siteName: string = "Portfolio";

var 是函数作用域,容易出现变量提升和作用域污染,所以通常不建议使用。

if (true) {
  var message = "hello";
}
 
console.log(message); // 仍然可访问

letconst 是块级作用域,更符合现代开发习惯。

if (true) {
  let message = "hello";
}
 
// console.log(message); // 编译报错

类型推断

TypeScript 不要求每个变量都显式写类型。很多时候它可以根据初始值自动推断。

let name = "Alice"; // string
let age = 30; // number

一般原则是:简单变量可以依赖类型推断,函数参数、返回值、复杂对象结构更适合显式标注类型。

const 的细节

const 表示变量绑定不能重新赋值,但如果它指向对象,对象内部属性仍然可以修改。

const person = { name: "Alice", age: 25 };
person.age = 26;
 
// person = {}; // 不允许

理解这一点有助于区分“引用不可变”和“内容不可变”。