TypeScript 概念与使用
TypeScript 的诞生
JavaScript 是弱类型语言,啥类型都能往一块儿凑,这开发的时候是挺自由的,可一旦项目复杂起来,各种类型混在一起,调试起来就头疼了。
比如,你本来想把两个数字相加,结果不小心传了个字符串进去,程序就可能出错,还得花好大功夫去排查。再说了,代码维护也是个大问题。项目一大,代码一多,过段时间自己再看都得琢磨半天,别人接手更是难上加难。
没有个明确的类型说明,函数参数是啥类型、返回啥类型,都得靠猜,好在,TypeScript 就是为了解决这些问题应运而生的。它是 JavaScript 的超集,简单来说,就是给 JavaScript 加了个“壳”,这个“壳”里有类型系统,能帮咱们提前检查类型错误,让代码更稳定。而且,它还能让代码更有条理,更容易维护,有了类型注解,就像给代码加了详细的说明,别人一看就懂。
TypeScript 的特性
1. 静态类型
TypeScript 的核心特性是类型检查,它允许在开发阶段捕获潜在的类型错误,减少运行时 Bug。 开发者可以为变量、函数参数和返回值显式声明类型。
let age: number = 25;
let name: string = "Simin";
function add(x: number, y: number): number {
return x + y;
}
2. 类型推断
即使没有显式声明类型,TypeScript 也可以根据上下文自动推断变量的类型。
let isDone = true; // 推断为 boolean 类型
3. 接口(Interface)
定义对象的结构,包括属性和方法,提供强大的代码约束能力。
interface User {
id: number;
name: string;
email?: string; // 可选属性
}
const user: User = { id: 1, name: "Simin" };
4. 类和继承
TypeScript 扩展了 JavaScript 的类(Class
),支持访问修饰符(public
、private
、protected
)以及接口实现。
class Person {
private name: string;
constructor(name: string) {
this.name = name;
}
public greet(): string {
return `Hello, my name is ${this.name}`;
}
}
5. 泛型(Generics)
提供灵活的类型定义,可以对类型进行参数化。
function identity<T>(arg: T): T {
return arg;
}
const result = identity<string>("Hello");
6. 枚举(Enum)
定义一组命名常量,增加代码的可读性。
enum Direction {
Up,
Down,
Left,
Right,
}
let dir: Direction = Direction.Up;
7. 模块和命名空间
支持模块化编程,方便代码分割和重用。
export function greet(name: string): string {
return `Hello, ${name}`;
}
8. 工具类型(Utility Types)
提供预定义的类型工具,如 Partial、Readonly、Pick 等,用于操作类型。
interface User {
id: number;
name: string;
email: string;
}
const partialUser: Partial<User> = { name: "Bob" };
TypeScript 的使用方法
1. 安装 TypeScript
在项目中通过npm安装 TypeScript:
npm install -g typescript
安装完成后,可以通过以下命令检查版本:
tsc --version
2.编写 TypeScript 文件
创建一个扩展名为 .ts 的文件,例如 example.ts:
function greet(name: string): string {
return `Hello, ${name}!`;
}
console.log(greet("Simin"));
3. 编译 TypeScript 文件
TypeScript 代码需要编译成 JavaScript 才能在浏览器或 Node.js 中运行。使用以下命令将 example.ts 编译成 JavaScript 文件:
tsc example.ts
生成的 example.js 文件内容如下:
function greet(name) {
return `Hello, ${name}!`;
}
console.log(greet("TypeScript"));
4.配置 TypeScript 编译选项
可以通过创建一个 tsconfig.json 文件来配置 TypeScript 的编译选项:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"outDir": "./dist"
},
"include": ["src/**/*.ts"],
"exclude": ["node_modules"]
}