나만의 작은 도서관

[TIL] 240702 캠프 79일차: protoBuf의 verify함수, 자바스크립트 계산된 프로퍼티 본문

Today I Learn

[TIL] 240702 캠프 79일차: protoBuf의 verify함수, 자바스크립트 계산된 프로퍼티

pledge24 2024. 7. 2. 22:46

오늘 배운 내용                                     

protoBuf의 verify함수

Protocol Buffers(프로토콜 버퍼) 같은 경우, 각 메시지 타입은 자동으로 생성된 verify 메서드를 가집니다. 이 메서드는 해당 메시지가 정의된 스키마와 일치하는지 검사합니다.

// 예제 프로토콜 버퍼 정의
message Person {
  string name = 1;
  int32 age = 2;
}

// 자동 생성된 verify 메서드 사용 예시
const person = { name: "Alice", age: "twenty-five" }; // age는 숫자여야 함

const errorMessage = Person.verify(person);
console.log(errorMessage); // "age: integer expected" (유효하지 않은 데이터)

위 예제에서 Person.verify는 person 객체의 age 필드가 int32 타입이어야 한다고 알려줍니다. 문자열 "twenty-five"는 유효하지 않기 때문에 오류 메시지를 반환합니다.

자바스크립트 계산된 프로퍼티 (Computed Property)

JavaScript에서 계산된 프로퍼티(Computed Property) 는 객체 리터럴 내에서 속성 이름을 동적으로 결정할 수 있게 해주는 기능입니다. 즉, 프로퍼티 이름을 변수나 표현식으로 지정할 수 있습니다. ES6(ECMAScript 2015)에서 도입된 이 기능은 객체의 속성을 정의할 때 매우 유연하게 활용할 수 있습니다. 사용예제는 다음과 같습니다.

 

간단한 계산된 프로퍼티 사용

const propName = "status";
const user = {
  name: "Bob",
  [propName]: "active"
};

console.log(user); // { name: 'Bob', status: 'active' }

 

표현식을 사용한 계산된 프로퍼티

const index = 1;
const keyPrefix = "item";
const obj = {
  [`${keyPrefix}_${index}`]: "Value 1",
  [`${keyPrefix}_${index + 1}`]: "Value 2"
};

console.log(obj); // { item_1: 'Value 1', item_2: 'Value 2' }

 

함수를 계산된 프로퍼티로 사용하기 

const getDynamicKey = () => "dynamicProp";
const dynamicObj = {
  [getDynamicKey()]: "This is dynamic!"
};

console.log(dynamicObj); // { dynamicProp: 'This is dynamic!' }

 

배열 인덱스를 계산된 프로퍼티로 사용하기

const arr = ["one", "two", "three"];
const obj = {};

arr.forEach((value, index) => {
  obj[`item${index + 1}`] = value;
});

console.log(obj); // { item1: 'one', item2: 'two', item3: 'three' }

 

키와 값을 동적으로 추가하기

const keys = ["name", "age", "country"];
const values = ["Charlie", 25, "USA"];
const dynamicObject = {};

keys.forEach((key, index) => {
  dynamicObject[key] = values[index];
});

console.log(dynamicObject); // { name: 'Charlie', age: 25, country: 'USA' }

 

오늘 한 일                                       

더보기
  • TCP 서버 설명하면서 클론코딩하기 90%