TypeScript 的核心价值是把一部分错误提前到代码运行之前发现。JavaScript 很灵活,但也容易在运行时才暴露问题,例如变量类型变化、对象属性不存在、函数参数不符合预期。TypeScript 通过静态类型检查减少这类运行时异常。
编译与类型检查
TypeScript 代码通常不会直接在浏览器或 Node.js 中运行,而是先经过编译,转换成 JavaScript。这个过程中,编译器会检查类型是否合理。
需要注意的是,类型检查主要发生在开发和构建阶段;运行时执行的仍然是 JavaScript。
变量声明
现代 TypeScript/JavaScript 中优先使用 let 和 const。
let count: number = 10;
count = 20;
const siteName: string = "Portfolio";var 是函数作用域,容易出现变量提升和作用域污染,所以通常不建议使用。
if (true) {
var message = "hello";
}
console.log(message); // 仍然可访问let 和 const 是块级作用域,更符合现代开发习惯。
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 = {}; // 不允许理解这一点有助于区分“引用不可变”和“内容不可变”。