# object 工具类型

在 CodeSandBox 中尝试 (opens new window)

# KeysToUnion 键转联合类型

将对象类型的键转为联合类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
    value: 2
    id: 3
}

type Result = object.KeysToUnion<O> // 'item' | 'value' | 'id'

# Values 值类型转联合类型

将对象类型的所有值的类型转为联合类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
    value: 2
    id: 3
}

type Result = object.Values<O> // 1 | 2 | 3

# KeysToTuple 键转元组

将对象类型的所有键的类型转为元组类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
    value: 2
    id: 3
}

type Result = object.KeysToTuple<O> // ('item' | 'value' | 'id')[]

# ExtractValues 过滤符合条件的属性

过滤出对象类型中属性值符合约束的属性

泛型参数

  • T

    • 约束 any
    • 必须
  • V

    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
    value: 2
    id: '3'
}

type Result = object.ExtractValues<O, number> // { item: 1; value: 2 }

# ExcludeValues 过滤不符合条件的属性

过滤出对象类型中属性值不符合约束的属性

泛型参数

  • T

    • 约束 any
    • 必须
  • V

    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
    value: 2
    id: '3'
}

type Result = object.ExcludeValues<O, number> // { id: "3" }

# GetterSetterPrefix 添加 get 和 set 前缀

为对象类型中的每个属性名添加 get 和 set 前缀

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
}

type Result = object.GetterSetterPrefix<O> // { getItem: () => 1; setItem: (val: 1) => void; item: 1 }

# Proxify 转为 get set 形式

将对象类型的每个属性值转为包含 get 和 set 的对象类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
}

type Result = object.Proxify<O> // { item: { get: () => 1; set: (val: 1) => void } }

# NullableValue 值可为空

将对象类型的每个属性值转为可为空

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    item: 1
}

type Result = object.NullableValue<O> // { item: null | undefined | 1 }

# Include 提取键名符合条件的键

提取对象类型中,符合约束的键,并构造新类型

泛型参数

  • T

    • 约束 any
    • 必须
  • U

    • 约束 keyof any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    value: 0
    item: 1
}

type Result = object.Include<O, 'value'> // { value: 1 }

# ChangeRecordType 填充类型

将对象类型的属性值填充为给定类型

泛型参数

  • K

    • 约束 any
    • 必须
  • T

    • 约束 any
    • 必须
    • 默认 undefined
    • 注:用于填充的类型

示例

import { object } from 'typescript-lodash'

interface O {
    value: 0
    item: 1
}

type Result = object.ChangeRecordType<O, null> // { value: null; item: null }

# Mutable 可写

将只读对象类型转为可写对象类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    readonly value: 0
    readonly item: 1
}

type Result = object.Mutable<O> // { value: 0; item: 1 }

# ReadonlyPartial 只读且可选

将对象类型的属性转为只读但可选

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    value: 0
    item: 1
}

type Result = object.ReadonlyPartial<O> // { readonly value?: 0 | undefined; readonly item?: 1 | undefined }

# DeepPartial 所有属性可选

将对象类型的所有属性转为可选

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    value: 0
    item: 1
}

type Result = object.DeepPartial<O> // { value?: 0 | undefined; item?: 1 | undefined }

# ChainedAccessUnion 查找可读路径

将对象的所有可以访问的属性路径,以联合类型表示

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    a: {
        b: {
            c: {}
            d: 1
        }
        e: 1
    }
    f: {
        g: null
    }
}

type Result = object.ChainedAccessUnion<O> // "a" | "f" | "a.b" | "a.b.c" | "a.b.d" | "a.e" | "f.g"

# ObjectToUnion 对象转元组

将对象类型转为联合类型

泛型参数

  • T
    • 约束 any
    • 必须

示例

import { object } from 'typescript-lodash'

interface O {
    a: 1
    b: 2
}

type Result = object.ObjectToUnion<O> // { a: 1 } | { b: 2 }
最后更新时间: 12/6/2022, 4:26:59 AM