1. TypeScript 简介
-
定义与目的
- TypeScript 是 JavaScript 的一个超集,增加了静态类型检查。
- 它的目标是开发大型应用,并提供编译时的错误检测和更好的工具支持。
2. 类型系统
-
基本类型
- 基本数据类型的介绍(如布尔值、数字、字符串等)
- 特殊类型(如
any,unknown,void,null,undefined)
-
复合类型
- 数组类型
- 元组(Tuple)类型
- 枚举(Enum)类型
-
自定义类型
- 接口(Interface)
- 类型别名(Type Alias)
- 字面量类型(Literal Types)
3. 函数
-
函数声明
- 参数类型和返回值类型的标注
-
重载
- 函数签名的多个版本以适应不同的调用方式
-
箭头函数
4. 对象与类
-
面向对象编程
- 类(Class)的概念
- 继承(Inheritance)
- 多态(Polymorphism)
- 封装(Encapsulation)
-
修饰符
public,private,protected
-
静态成员
- 静态属性和方法
5. 泛型
-
泛型的基本概念
- 创建可复用的组件而不牺牲类型安全性
-
泛型约束
- 使用泛型参数时指定条件
6. 模块化
-
模块的概念
- 模块化的意义及其在组织代码中的作用
-
导入与导出
- 如何在不同文件之间共享代码
7. 工具与配置
-
编译器选项
tsconfig.json文件的使用
-
类型定义文件
.d.ts文件的作用
-
IDE 支持
- 编辑器中对 TypeScript 的支持,例如 VSCode
8. 进阶主题
-
装饰器
- 装饰器的基础知识和应用场景
-
命名空间
- 命名空间用于组织代码,避免命名冲突
-
高级类型
- 条件类型(Conditional Types)、映射类型(Mapped Types)等
基本类型
typescript
深色版本
// 定义基本类型的变量
let isDone: boolean = false;
let age: number = 25;
let name: string = "Alice";
复合类型
数组
typescript
深色版本
// 定义一个字符串数组
let names: string[] = ["Alice", "Bob", "Charlie"];
元组(Tuple)
typescript
深色版本
// 定义一个元组,包含一个字符串和一个数字
let person: [string, number] = ["Dave", 30];
枚举(Enum)
typescript
深色版本
// 定义一个枚举类型
enum Color { Red, Green, Blue }
let colorName: string = Color[2]; // 使用索引获取名称,结果为 "Blue"
自定义类型
接口(Interface)
typescript
深色版本
// 定义一个接口
interface Person {
name: string;
age: number;
}
// 实现接口
let user: Person = {
name: "Eve",
age: 28,
};
类型别名(Type Alias)
typescript
深色版本
// 创建一个类型别名
type Point = {
x: number;
y: number;
};
let coordinate: Point = { x: 10, y: 20 };
函数
函数声明
typescript
深色版本
// 定义一个函数并指定参数和返回值类型
function add(a: number, b: number): number {
return a + b;
}
箭头函数
typescript
深色版本
// 使用箭头函数简化语法
const greet = (name: string): string => `Hello, ${name}`;
类
typescript
深色版本
// 定义一个类
class Animal {
public name: string;
constructor(name: string) {
this.name = name;
}
public speak() {
console.log(`${this.name} makes a noise.`);
}
}
// 继承
class Dog extends Animal {
constructor(name: string) {
super(name);
}
public speak() {
console.log(`${this.name} barks.`);
}
}
let dog = new Dog("Rex");
dog.speak(); // 输出: Rex barks.
泛型
typescript
深色版本
// 定义一个泛型函数
function identity<T>(arg: T): T {
return arg;
}
let output = identity<string>("myString"); // 指定泛型参数为 string
模块化
导入与导出
假设有一个文件math.ts:
typescript
深色版本
// math.ts 文件内容
export function sum(a: number, b: number): number {
return a + b;
}
在另一个文件中使用它:
typescript
深色版本
// 导入 math.ts 中的 sum 函数
import { sum } from './math';
console.log(sum(5, 10)); // 输出: 15
高级类型
条件类型
typescript
深色版本
// 条件类型用于基于某些条件来选择不同的类型
type TypeName<T> = T extends string ? "string" : "other";
映射类型
typescript
深色版本
// 映射类型可以用来创建新的类型,通常是对已有类型的属性进行转换
type Readonly<T> = {
readonly [P in keyof T]: T[P];
};