🦊

Objectを型安全に扱うユーティリティ関数を定義する

2022/08/17に公開

目的

Typescriptを書いている中で、Objectの操作する際、型がつかなくなるときがよくあります。
例えば、Object.keysなどのObjectの静的プロパティを利用したときに、型が補完されないです。
今回は、Objectの型を正しく補完してくれるユーティリティ関数を定義しようと思います。

keys

const keys = <TObj>(obj: TObj) =>
  Object.keys(obj) as (keyof TObj)[]

entries

type Entries<TObj> = {
    [Key in keyof TObj]: [keyof Pick<TObj, Key>, TObj[Key]]
}[keyof TObj][];

const entries = <TObj,>(object: TObj) => {
    return Object.entries(object) as Entries<TObj>
}

deepCopy

const deepCopy = <TObj,>(obj: TObj) => 
  JSON.parse(JSON.stringify(obj)) as TObj

Discussion