Skip to content

TypeScript 类型关系图 #368

@tofrankie

Description

@tofrankie

类型分类

flowchart TD
    TypeScript[TypeScript 类型系统]
    
    TypeScript --> PrimitiveTypes[基本类型]
    TypeScript --> ObjectTypes[对象类型]
    TypeScript --> SpecialTypes[特殊类型]
    TypeScript --> CompoundTypes[复合类型]
Loading

基本类型

flowchart TD
    PrimitiveTypes[基本类型] --> String[string]
    PrimitiveTypes --> Number[number]
    PrimitiveTypes --> Boolean[boolean]
    PrimitiveTypes --> BigInt[bigint]
    PrimitiveTypes --> Symbol[symbol]
    PrimitiveTypes --> Null[null]
    PrimitiveTypes --> Undefined[undefined]
Loading

对象类型

flowchart TD
    ObjectTypes[对象类型] --> Object[Object]
    ObjectTypes --> Function[Function]
    ObjectTypes --> Array[Array]
    ObjectTypes --> Promise[Promise]
    ObjectTypes --> Date[Date]
    ObjectTypes --> RegExp[RegExp]
    ObjectTypes --> Error[Error]
    ObjectTypes --> Map[Map]
    ObjectTypes --> Set[Set]
    ObjectTypes --> WeakMap[WeakMap]
    ObjectTypes --> WeakSet[WeakSet]
    ObjectTypes --> Iterator[Iterator]
    ObjectTypes --> Generator[Generator]
    
    Function --> Object
    Array --> Object
    Promise --> Object
    Date --> Object
    RegExp --> Object
    Error --> Object
    Map --> Object
    Set --> Object
    WeakMap --> Object
    WeakSet --> Object
    Iterator --> Object
    Generator --> Object
Loading

特殊类型

flowchart TD
    SpecialTypes[特殊类型] --> Never[never]
    SpecialTypes --> Unknown[unknown]
    SpecialTypes --> Any[any]
    SpecialTypes --> Void[void]
Loading

复合类型

flowchart TD
    CompoundTypes[复合类型] --> UnionType[联合类型]
    CompoundTypes --> IntersectionType[交叉类型]
    CompoundTypes --> TupleType[元组类型]
    CompoundTypes --> LiteralType[字面量类型]
Loading

所有类型

flowchart TD
    TypeScript[TypeScript 类型系统]
    
    TypeScript --> PrimitiveTypes[基本类型]
    TypeScript --> ObjectTypes[对象类型]
    TypeScript --> SpecialTypes[特殊类型]
    TypeScript --> CompoundTypes[复合类型]
    
    PrimitiveTypes --> String[string]
    PrimitiveTypes --> Number[number]
    PrimitiveTypes --> Boolean[boolean]
    PrimitiveTypes --> BigInt[bigint]
    PrimitiveTypes --> Symbol[symbol]
    PrimitiveTypes --> Null[null]
    PrimitiveTypes --> Undefined[undefined]
    
    ObjectTypes --> Object[Object]
    ObjectTypes --> Function[Function]
    ObjectTypes --> Array[Array]
    ObjectTypes --> Promise[Promise]
    ObjectTypes --> Date[Date]
    ObjectTypes --> RegExp[RegExp]
    ObjectTypes --> Error[Error]
    ObjectTypes --> Map[Map]
    ObjectTypes --> Set[Set]
    ObjectTypes --> WeakMap[WeakMap]
    ObjectTypes --> WeakSet[WeakSet]
    ObjectTypes --> Iterator[Iterator]
    ObjectTypes --> Generator[Generator]
    
    SpecialTypes --> Never[never]
    SpecialTypes --> Unknown[unknown]
    SpecialTypes --> Any[any]
    SpecialTypes --> Void[void]
    
    CompoundTypes --> UnionType[联合类型]
    CompoundTypes --> IntersectionType[交叉类型]
    CompoundTypes --> TupleType[元组类型]
    CompoundTypes --> LiteralType[字面量类型]
    
    Function --> Object
    Array --> Object
    Promise --> Object
    Date --> Object
    RegExp --> Object
    Error --> Object
    Map --> Object
    Set --> Object
    WeakMap --> Object
    WeakSet --> Object
    Iterator --> Object
    Generator --> Object
Loading

类型赋值关系

严格模式

flowchart TD
    %% 底层类型
    Never[never - 底层类型]
    
    %% 第四层 - 特殊值类型
    Null[null]
    Undefined[undefined]
    Void[void]
    
    %% 第三层 - 基本类型
    String[string]
    Number[number]
    Boolean[boolean]
    BigInt[bigint]
    Symbol[symbol]
    
    %% 第二层 - 对象类型
    Object[Object - 对象基类]
    
    %% 顶层类型
    Any[any - 顶层类型]
    Unknown[unknown - 类型安全顶层]
    
    %% 正确的赋值关系
    Never --> Any
    Never --> Unknown
    Never --> Object
    Never --> String
    Never --> Number
    Never --> Boolean
    Never --> BigInt
    Never --> Symbol
    Never --> Null
    Never --> Undefined
    Never --> Void
    
    %% 基本类型和对象类型可以赋值给 unknown 和 any
    String --> Any
    String --> Unknown
    Number --> Any
    Number --> Unknown
    Boolean --> Any
    Boolean --> Unknown
    BigInt --> Any
    BigInt --> Unknown
    Symbol --> Any
    Symbol --> Unknown
    
    Object --> Any
    Object --> Unknown
    
    %% 特殊值类型只能赋值给 unknown 和 any
    Null --> Any
    Null --> Unknown
    Undefined --> Any
    Undefined --> Unknown
    Void --> Any
    Void --> Unknown
    
    %% unknown 可以赋值给 any
    Unknown --> Any
    
    %% 分组
    subgraph BottomLevel[底层类型层]
        Never
    end
    
    subgraph SpecialLevel[特殊值类型层]
        Null
        Undefined
        Void
    end
    
    subgraph PrimitiveLevel[基本类型层]
        String
        Number
        Boolean
        BigInt
        Symbol
    end
    
    subgraph ObjectLevel[对象类型层]
        Object
    end
    
    subgraph TopLevel[顶层类型层]
        Any
        Unknown
    end
Loading

非严格模式

flowchart TD
    %% 底层类型
    Never[never - 底层类型]
    
    %% 第四层 - 特殊值类型
    Null[null]
    Undefined[undefined]
    Void[void]
    
    %% 第三层 - 基本类型
    String[string]
    Number[number]
    Boolean[boolean]
    BigInt[bigint]
    Symbol[symbol]
    
    %% 第二层 - 对象类型
    Object[Object - 对象基类]
    
    %% 顶层类型
    Any[any - 顶层类型]
    Unknown[unknown - 类型安全顶层]
    
    %% 正确的赋值关系
    Never --> Any
    Never --> Unknown
    Never --> Object
    Never --> String
    Never --> Number
    Never --> Boolean
    Never --> BigInt
    Never --> Symbol
    Never --> Null
    Never --> Undefined
    Never --> Void
    
    %% 基本类型和对象类型可以赋值给 unknown 和 any
    String --> Any
    String --> Unknown
    Number --> Any
    Number --> Unknown
    Boolean --> Any
    Boolean --> Unknown
    BigInt --> Any
    BigInt --> Unknown
    Symbol --> Any
    Symbol --> Unknown
    
    Object --> Any
    Object --> Unknown
    
    %% 非严格模式下的额外赋值关系 - 只有 null 和 undefined
    Null --> Any
    Null --> Unknown
    Null --> String
    Null --> Number
    Null --> Boolean
    Null --> BigInt
    Null --> Symbol
    
    Undefined --> Any
    Undefined --> Unknown
    Undefined --> String
    Undefined --> Number
    Undefined --> Boolean
    Undefined --> BigInt
    Undefined --> Symbol
    
    %% void 类型始终只能赋值给 unknown 和 any
    Void --> Any
    Void --> Unknown
    
    %% unknown 可以赋值给 any
    Unknown --> Any
    
    %% 分组
    subgraph BottomLevel[底层类型层]
        Never
    end
    
    subgraph SpecialLevel[特殊值类型层]
        Null
        Undefined
        Void
    end
    
    subgraph PrimitiveLevel[基本类型层]
        String
        Number
        Boolean
        BigInt
        Symbol
    end
    
    subgraph ObjectLevel[对象类型层]
        Object
    end
    
    subgraph TopLevel[顶层类型层]
        Any
        Unknown
    end
Loading

Metadata

Metadata

Assignees

No one assigned

    Labels

    20252025 年撰写TS与 Typescript 相关的文章

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions