const
-
[TypeScript] ReturnType, const개발/Javascript 2022. 7. 13. 01:56
type Color = 'red' | 'yellow' | 'orange'; // const color: Color = 'white' // error const color: Color = 'yellow'; // ok color 변수의 타입은 Color입니다. string이 아닙니다. 모든 string 값을 넣을 수 있는 것이 아니라 'red', 'yellow', 'orange'만 넣을 수 있는 타입입니다. 리덕스에서 보통 액션 생성 함수를 사용하는데요. 다음 코드는 반환값이 어떻게 추론될까요. const TEST = 'test'; const fn = () => ({type: TEST}) string으로 되어 버립니다. 의도한 것이라면 상관 없지만 리덕스에서 액션 생성 함수를 사용할 때는 string 타입이..
-
var, function개발/Javascript 2022. 2. 26. 21:25
var와 function 키워드는 호이스팅이 될 뿐만 아니라 전역으로 선언됐을 때 window 객체에 속하게 됩니다. 아래 코드는 오류를 일으키지 않습니다. print(); function print() { console.log('print'); }; window.print(); console.log(a); var a = 10; console.log(window.a); 의도했다면 문제가 없지만 의도하지 않았다면 바람직한 결과는 아닐 것입니다. window 전역 객체에 사용자 정의 함수나 객체를 넣어야 하는 상황이 아니라면 window 전역 객체에 무언가를 추가할 이유와 필요가 없습니다. let이나 const 키워드는 호이스팅이 일어나지 않으며 전역에서 사용할 때 window 객체에 포함되지 않는다. 실행..
-
[const_cast] 제한적으로 활용하자개발/C·C++ 2021. 4. 27. 16:33
const_cast는 객체(변수)의 상수성을 없애주는 연산자입니다. 안정성 관점에서 없던 상수성이 생기는 건 괜찮지만 있던 상수성이 사라지는 건 위험합니다. 상수성을 부여해서 객체를 만든 이유가 있을 것이기 때문입니다. 그래서 const_cast는 정말 쓰지 않으면 안 되는 곳에, 고심해보고 사용해야 합니다. 다음은 연산자를 오버로딩해서 사용할 때 중복 코드를 방지하면서 코드 길이를 줄이는 과정에 const_cast가 사용되는 케이스입니다. class String { private: char* _chars; public: String(const char* chars) : _chars(new char[strlen(chars) + 1] { strcpy(_chars, chars); } char& operato..
-
[const member function] 이면에 있는 조금 더 복잡한 것개발/C·C++ 2021. 4. 22. 22:21
클래스에 정의한 함수를 멤버 함수라고 합니다. 변수는 멤버 변수라고 하지요. 클래스로 객체를 만들면 객체를 위한 메모리가 할당이 될 겁니다. 여러 객체를 만들면 각 객체에 메모리가 할당됩니다. 함수도 객체의 수만큼 만들어질까요? 변수는 객체마다 새로 만들어져야 하는 것이 맞지만, 함수는 A class로 만든 a 객체의 hi() 함수나, A class로 만든 b 객체의 hi() 함수가 다르지 않습니다. 다음은 객체를 두 개를 만들어서 각자 함수를 호출한 뒤 중단점을 걸어서 주소를 확인한 결과입니다. 변수는 객체마다 다른 데이터를 담아야 하겠지만 함수는 기능 단위이기 때문에 객체마다 새로 만들 필요가 없습니다. 멤버 함수 안에 멤버 변수가 있을 경우에 접근하는 방법이 있어야 할 것입니다. 개발자는 자연스럽게..