TypeScript学习笔记-2

97 阅读2分钟

一、object 类型

小 object 与 大 object 区别

  • 小 object

    • 能存储非原始类型的值(如数组、对象)

    • 不能存储原始类型(如 string、number)

    • 使用场景较少,类型限制仍较宽泛

  • 大 object

    • 可存储几乎所有类型(除 nullundefined

    • 实际开发中与 any 类似,类型安全性低

类型声明建议

  • 使用 字面量类型 明确属性结构,增强可读性与准确性

  • 可选属性通过 ? 标记(08:10):

    interface User {
      name: string;
      age?: number;
    }
    
  • 类型定义的语法风格灵活(逗号、分号、换行均可)

  • 可使用 索引签名

    interface Dictionary {
      [key: string]: string;
    }
    

二、函数类型与数组类型

函数类型

  • 可通过 接口类型别名 定义:

     type Add = (x: number, y: number) => number;
    

数组类型

  • 两种定义方式:

    const arr1: string[] = ['a', 'b'];
    const arr2: Array<number> = [1, 2];
    
  • 元组(Tuple):限制类型和长度的数组:

    const tuple: [string, number] = ['Tom', 25];
    

三、枚举类型

数字枚举

  • 自动递增:

    enum Direction {
      Up,    // 0
      Down,  // 1
      Left,  // 2
      Right  // 3
    }
    
  • 支持反向映射

    const d = Direction[0]; // 'Up'
    

字符串枚举

  • 无自动递增与反向映射:

    enum Status {
      Success = 'SUCCESS',
      Fail = 'FAIL'
    }
    

枚举优势

  • 防止拼写错误

  • 提升代码可读性

  • 集中管理常量


四、联合类型与交叉类型

联合类型

  • 一个变量可以是多种类型之一:
  let value: string | number;

交叉类型

  • 同时具备多个类型的特性:
      type A = { name: string };
      type B = { age: number };
      type C = A & B; // { name: string; age: number }
    

命名规范

  • 类型名首字母大写,提高协作一致性

五、void 类型与函数返回值

函数返回值类型

  • 明确返回类型可减少错误,提高维护性:

    function log(): void {
      console.log('Logging...');
    }
    
  • void 类型 ≠ 空返回值,可以返回 undefined

注意事项

  • 即使声明 void,函数仍可能返回值(不推荐)

  • 不同数组方法对返回值要求不同:

    • forEach 无需返回值

    • mapfind 需有返回结果

箭头函数小心简写问题:

const fn = () => 'hello'; // 实际返回 string
const log = () => { return 'hi'; }; // 返回 string,若声明 void 会冲突

总结

TypeScript 类型系统通过 object、函数、数组、元组、枚举、联合与交叉类型、void 等丰富机制,提供了强大的静态类型支持。理解和灵活运用这些概念,可以显著提升代码质量、协作效率和开发体验。