当前位置: 首页 > news >正文

typescript类型定义讲解

1. 基本类型定义

  • 原始类型

    let num: number = 42;      // 数值类型
    let str: string = "hello"; // 字符串类型
    let bool: boolean = true;  // 布尔类型
    let n: null = null;        // 空值
    let u: undefined;         // 未定义
    let big: bigint = 100n;    // 大整数类型
    let sym: symbol = Symbol();// 唯一标识符
  • 特殊类型

    let anyVal: any = "anything";  // 任意类型(不推荐)
    let unknownVal: unknown = 42;  // 未知类型(需类型检查)
    function error(): never {     // 永不返回值的函数throw new Error();
    }
    function log(): void {         // 无返回值的函数console.log("void");
    }

2. 复合类型

  • 数组

    let arr1: number[] = [1, 2];       // 字面量写法
    let arr2: Array<string> = ["a"];  // 泛型写法
  • 元组(Tuple)

    let tuple: [string, number] = ["Alice", 30]; // 固定长度和类型
    let optionalTuple: [number, boolean?] = [1]; // 可选元素
  • 枚举(Enum)

    enum Color { Red, Green = "green" } // 数字枚举或字符串枚举
    const enum Direction { Up, Down }  // 常量枚举(编译时内联)

3. 对象与接口

  • 对象字面量

    let obj: { name: string; age?: number } = { name: "Alice" }; // 可选属性
  • 接口(Interface)

    interface User {name: string;greet(): void; // 方法类型
    }
  • 索引签名与只读属性

    interface DynamicObj {[key: string]: any;   // 动态属性readonly id: number;  // 只读属性
    }

4. 函数类型

  • 参数与返回值

    function add(x: number, y: number): number { return x + y; } // 显式定义
    const greet: (name: string) => string = (n) => `Hello ${n}`; // 箭头函数
  • 可选参数与默认值

    function buildName(first: string, last?: string = "Doe") { ... }
  • 函数重载

    function reverse(x: number): number;
    function reverse(x: string): string;
    function reverse(x: number | string) { ... }

5. 高级类型

  • 联合类型(Union)

    let value: string | number; // 可接受多种类型
    type Status = "success" | "error"; // 字面量联合类型
  • 交叉类型(Intersection)

    type UserContact = User & Contact; // 合并多个类型
  • 泛型(Generics)

    function identity<T>(arg: T): T { return arg; } // 泛型函数
    class Box<T> { value: T; }                      // 泛型类
    interface Pair<K, V> { key: K; value: V; }      // 泛型接口
  • 类型别名(Type Alias)

    type Point = { x: number; y: number };
    type Callback = (data: string) => void;

6. 实用工具类型

  • 内置工具类型

    type PartialUser = Partial<User>;        // 所有属性变为可选
    type ReadonlyUser = Readonly<User>;      // 所有属性变为只读
    type UserNames = Pick<User, "name">;     // 提取特定属性
    type UserWithoutId = Omit<User, "id">;   // 排除特定属性
  • 条件类型与映射类型

    type Nullable<T> = T | null;            // 条件类型
    type Stringify<T> = { [P in keyof T]: string }; // 映射类型

7. 类型操作

  • 类型断言

    let value: any = "hello";
    let strLength: number = (<string>value).length; // 等效于 `value as string`
  • 类型保护

    if (typeof val === "string") { ... }    // typeof 检查
    if (error instanceof ApiError) { ... } // instanceof 检查

相关文章:

  • sqlite数据库操作
  • python+open3d选择点云上的某个点并获取其对应三维坐标
  • 深入理解 Pinia:从基础到进阶的完整指南
  • 如何看待首个通用型智能体 (The First General AI Agent) Manus发布?
  • PyTorch 中如何针对 GPU 和 TPU 使用不同的处理方式
  • 在vue里,使用dayjs格式化时间并实现日期时间的实时更新
  • 在 Vue 2 中使用 qrcode 库生成二维码
  • Baklib打造AI就绪型知识管理引擎
  • Android Studio开发安卓app 设置开机自启
  • github+ Picgo+typora
  • AI 实践探索:辅助生成测试用例
  • Redis 集群版本升级指南:从 Redis 7 升级到 Redis 8
  • Linux内核初始化机制全解析:从pure_initcall到late_initcall
  • Java高频面试之并发编程-13
  • Go语言八股之并发详解
  • 七彩喜微高压氧舱:探索健康与康复的新维度
  • Linux 内核学习(6) --- Linux 内核基础知识
  • Advanced Installer 22.5打包windows 安装包
  • 【Bluedroid】 HID 设备应用注册与主机服务禁用流程源码解析
  • 【Mybatis-plus常用语法】
  • 美国长滩港货运量因关税暴跌三成,港口负责人:货架要空了
  • 2025年两岸关系研讨会在上海开幕
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 第一集|《刑警的日子》很生活,《执法者们》有班味
  • 最快3天开通一条定制公交线路!上海推出服务平台更快响应市民需求
  • 以总理内塔尼亚胡称决心彻底击败哈马斯