🦊
Objectを型安全に扱うユーティリティ関数を定義する
目的
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