console.time("Direct Assignment");
for (let i = 0; i < 1000000; i++) {
const result = {};
result.key = "value";
}
console.timeEnd("Direct Assignment");
console.time("Object.assign");
for (let i = 0; i < 1000000; i++) {
const result = {};
Object.assign(result, { key: "value" });
}
console.timeEnd("Object.assign");
TypeScript
복사
•
Object.assign보다 Direct Assignment가 미미하지만 더 빠르다.
globalOmit
before
export const globalOmit = <T extends object>(targetObj: T, ...keys: (keyof T)[]) => {
if (typeof targetObj === "object" && targetObj !== null) {
const result: Partial<T> = {};
const targetObjKeys = Object.keys(targetObj);
targetObjKeys.forEach((_currentKey) => {
const currentKey = _currentKey as keyof T;
if (!keys.includes(currentKey)) {
Object.assign(result, { [currentKey]: targetObj[currentKey] });
}
});
return result;
}
return null;
};
TypeScript
복사
after
export const globalOmit = <T extends object>(targetObj: T, ...keys: (keyof T)[]) => {
if (typeof targetObj === "object" && targetObj !== null) {
return Object.keys(targetObj).reduce((result, _currentKey) => {
const currentKey = _currentKey as keyof T;
if (!keys.includes(currentKey)) {
result[currentKey] = targetObj[currentKey];
}
return result;
}, {} as Partial<T>);
}
return null;
};
TypeScript
복사