나만의 작은 도서관
[TIL] 240702 캠프 79일차: protoBuf의 verify함수, 자바스크립트 계산된 프로퍼티 본문
오늘 배운 내용
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%
'Today I Learn' 카테고리의 다른 글
[TIL] 240704 캠프 81일차: TCP과제 패킷 구조 파악 (0) | 2024.07.04 |
---|---|
[TIL] 240703 캠프 80일차: 유니티 feaure.2d cannot be found (0) | 2024.07.03 |
[TIL] 240701 캠프 78일차: read ECONNRESET 오류, slice(), 백틱과 바이트배열 console.log (0) | 2024.07.01 |
[TIL] 240628 캠프 75일차: 빅 엔디안, 리틀 엔디안, protoBuf와 직렬화/역직렬화 (0) | 2024.06.28 |
[TIL] 240627 캠프 74일차: TCP Handshake, TCP와 UDP (0) | 2024.06.27 |