자바스크립트는 합성된 단어들에 대해 두 번째 단어부터 해당 단어의 첫 번째 글자를 대문자로 바꿔서 표기하는 카멜 케이스를 사용한다. 예를 들어서, helloZeetoHelloHelloZeetoHello 위처럼 두 번째 단어부터 첫 번째 글자를 대문자로 표기해준다. 이에 반해서, 파이썬이나 데이터베이스는 이어지는 단어 사이에 언더스코어(_)를 넣어주는 스네이크 케이스를 사용한다. 즉, 둘의 네이밍 전략은 다르기 때문에 자바스크립트를 사용하고자 한다면, 웬만해서 변수명 등을 카멜 케이스로 바꿔주는 것이 중요하다. 보통 ORM을 통해서 database의 raw 값에 접근하면, 프로퍼티 이름이 스네이크 케이스로 전달된다. 이때, 이는 자바스크립트의 네이밍 전략과 맞지 않으므로, 프로퍼티명을 카멜 케이스로 바꿔주..
Node.js/TypeScript
TypeScript를 사용하여 NestJS + TypeORM 개발을 하던 도중, 문자열을 프로퍼티명으로 적어야 하는 상황이 생겼습니다. 상황상 컬럼을 Enum으로 둘 수 없었고, Enum의 요소들 각각을 컬럼으로 집어넣었습니다. 예를 들어서 element1, element2, element3가 하나의 컬럼에 있는 것이 아니라 각각의 element1, element2, element3로 컬럼이 독립적으로 존재하는 것입니다. 이 상황에 프론트에서 Enum에 속하는 element1, element2, element3을 someElement라는 속성의 값으로 전달을 하게 되면, 이를 업데이트를 해야 하는 상황이 왔었는데, 기존에는 프로퍼티에 element1, element2, element3를 이름으로 적어야 ..
class Car { constructor(color) { this.color = color; } start() { console.log('start'); } } const bmw = new Car('red'); 위와 같이 클래스를 정의했을 때, 생성자 함수의 color 프로퍼티가 Car에 타입이 없다고 나옵니다. 그렇기 때문에 타입스크립트에서 클래스에서 생성자함수를 사용할 때, 멤버 변수를 미리 선언해주어야 합니다. class Car { color: string; constructor(color: string) { this.color = color; } start() { console.log('start'); } } const bmw = new Car('red'); 이외에도 다른 방법으로 타입을 지정해..