# 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 }