以下是您提供的 TypeScript 代码中涉及的核心知识点归纳:
一、基础类型与类型操作
类型断言
const result = numArr.find(item => item > 2) as number; // 强制类型断言
- 用于手动指定类型(可能跳过类型检查,需谨慎)
元组类型
let t1: [number, string, number?] = [1, 'A']; // 可选元素 let t2: [number, string, number] = [1, 'A', 2];
- 固定长度和类型的数组,支持可选元素 (
?
)
- 固定长度和类型的数组,支持可选元素 (
枚举类型
enum MyEnum { A, B, C } // 双向映射 console.log(MyEnum[0]); // 输出 "A"
- 枚举值与数字/字符串的自动双向映射特性
二、函数与参数处理
函数签名
function MyFn(a: number, b: string, c?: boolean, ...rest: number[]): number { ... }
- 参数类型注解、可选参数 (
?
)、剩余参数 (...rest
)
- 参数类型注解、可选参数 (
函数重载
function hello(name: string): string; function hello(age: number): string; function hello(value: string | number): string { ... }
- 通过多个声明支持不同类型参数的重载逻辑
三、面向对象编程
接口 (Interface)
interface Obj { name: string; age: number }
- 定义对象的结构约束
类与修饰符
class Article { public title: string; // 默认 public private tempData?: string; // 仅类内部访问 protected innerData?: string; // 允许子类访问 static readonly author: string = '张三'; // 静态只读属性 }
- 修饰符:
public
、private
、protected
、static
、readonly
- 修饰符:
存取器 (Getter/Setter)
class User { private _password: string = ''; get password(): string { return '*****'; } set password(newPassword: string) { ... } }
- 通过
get
/set
控制属性的访问和修改
- 通过
抽象类与继承
abstract class Animal { abstract name: string; // 抽象属性 abstract makeSound(): void; // 抽象方法 move(): void { ... } // 具体方法 } class Cat extends Animal { ... }
- 抽象类通过
abstract
定义未实现的成员,子类必须实现
- 抽象类通过
四、高级类型
类型别名 (Type Alias)
type MyUserName = string | number;
- 简化复杂类型的声明,支持联合类型 (
|
)
- 简化复杂类型的声明,支持联合类型 (
泛型
泛型函数function myFnfx<T>(a: T, b: T): T[] { return [a, b]; } myFnfx<number>(1, 2); // 显式指定类型 myFnfx('a', 'b'); // 类型推断
泛型类
class MyClass<T> { value: T; do(input: T): T { ... } } const myStr = new MyClass<string>('hello');
- 提供类型灵活性,避免重复代码
五、接口扩展
- 接口继承
interface Parent { prop1: string; prop2: number } interface Child extends Parent { prop3: string }
- 接口实现
class Dog implements Animal_interFace, C { ... }
- 类可通过
implements
实现多个接口
- 类可通过
六、其他关键点
可选链 (?)
bbb = 100; // 直接初始化 aaa?: string; // 可选属性
- 可选属性标记 (
?
)
- 可选属性标记 (
构造函数参数属性
constructor(public title: string, content: string) { ... }
- 简化类属性的声明和初始化
代码亮点总结
- 类型系统:涵盖基础类型、联合类型、类型断言等核心特性
- OOP 特性:完整的类、继承、抽象类、存取器实现
- 泛型设计:函数和类中灵活应用泛型
- 接口与类型别名:对比使用场景,清晰定义数据结构
- 函数重载:提升 API 的类型友好性
建议结合实际场景练习这些语法,例如通过泛型实现通用工具函数或抽象业务模型。