언어 32

JavaScript Call by value Call by reference

JavaScript Call by value Call by refrence Call by value와 Call by refrence는 각각 값 전달, 참조 전달 로 불리며, 변수, 객체 등이 함수에 인자(Argument)로 들어가 매개 변수(Parameter)를 어떤 식으로 전달 할지 결정하는 방식이다. Parameter와 Argument Parameter (매개 변수) 함수 선언부에 정의되고, 호출 시 인수로 전달된 값을 함수 내부에서 사용할 수 있게 해주는 변수 매개 변수의 전달 방식으로 Call by value, Call by Reference가 있다. Argument (인수) 함수 호출부에 정의되고, 호출 시 함수로 값을 전달해 주는 변수 Call by value (값 전달, 값에 의한 호출) A..

TypeScript 인터페이스와 타입의 차이

interface와 type을 무지성으로 사용하다 둘의 차이가 궁금해졌다. 사용 interface와 type의 기본적인 사용법은 다음과 같다. interface IPost { title: string; content: string; author: number; createdAt: string; } type TPost = { title: string; content: string; author: number; createdAt: string; } const postInterface: IPost = { title: "게시글 제목", content: "게시글 본문", author: 1, createdAt: new Date().toISOString(), }; const postType: TPost = { tit..

TypeScript any unknown

any any는 어떠한 타입도 할당받을 수 있는 타입이다. 컴파일 과정에서 타입 검사가 되지 않으며 any를 사용하는 타입스크립트는 소위 애니스크립트라고도 불린다. 사용자로부터 받은 데이터 또는 외부 라이브러리 사용 시 응답 값이 동적일 경우 종종 사용한다. 타입스크립트는 데이터의 자료형을 명시해 타입 안정성을 보장받기 위해 사용 하는데 any를 사용한다면 자바스크립트와 다를 게 없으므로 최대한 지양해야 한다. 넘버 타입의 사용 가능한 toFixed 메서드를 문자열 타입에 사용하려고 하니 에러가 출력된다. 이처럼 변수에 올바른 자료형을 명시한다면 코드 작성 단계에서 에러를 발견할 수 있다. any 타입을 할당하게 되면 컴파일러는 language라는 변수가 모든 자료형이 될 수 있다고 추론한다. 이런 경우..

TypeScript 사용 이유와 컴파일 과정

TypeScript 사용 이유 타입스크립트를 사용하면 왜 두 번 다시 자바스크립트로 돌아갈 수 없는지에 대해 포스팅한다. 백이나 프론트나 자바스크립트 관련 채용 공고를 조금만 보아도 자바스크립트를 메인으로 사용하는 회사는 거의 없다. 올해 초 개발 공부 시작 당시 타입스크립트가 우대사항인 기업들이 있었는데 요즘은 우대가 아닌 필수다. 특징 1.정적 타입의 컴파일 언어 인터프리터 언어인 자바스크립트와 다르게 타입스크립트는 컴파일 언어이다. 컴파일이란 타입스크립트 코드를 자바스크립트 코드로 변환되는 과정을 의미한다. 자바스크립트는 런타임 단계 즉 노드나 브라우저를 통해 코드를 실행을 해봐야 에러가 있는지 없는지 알 수 있다. 반면 타입스크립트는 컴파일 단계 즉 코드 작성 단계에서 에러를 감지할 수 있다. 2..

TypeScript const assertion

TypeScript const assertion 상수를 쉽게 관리하고 가독성을 높이기 위해 제공하는 타입스크립트 기능이다. 타입 추론의 범위를 좁히거나 서로 연관된 상수들을 하나의 네임스페이스로 관리해야 할 경우 유용하게 사용 가능하다. 그동안 무지성으로 as 키워드를 붙여 사용하곤 했었는데 이번 기회에 확실히 이해하게 되었다! 리터럴 타입 리터럴 타입이란 변하지 않는 데이터를 의미한다. 타입스크립트는 원시 타입(string, number 등) 외에 특정 값을 타입으로 지정할 수 있다. 변수 let을 선언 후 문자열을 할당하면 타입스크립트는 string이라는 문자열로 타입을 추론한다. 리터럴을 이용해 타입 지정 후 지정한 타입의 다른 값을 입력할 경우 컴파일 에러가 발생한다. 원인은 let은 재할당이 가..

JavaScript substr substring slice

JavaScript substr substring slice 문자열 관련 알고리즘 문제를 풀다 무지성으로 사용 한 메서드를 기록으로 남긴다. substr sbustr(시작, 길이) 또는 substr(시작) 시작부터 길이만큼 문자열을 자르며 길이를 생략하면 시작부터 끝까지 자른다. let str = "Absolute"; let res = str.substr(3, 2); console.log(res); // ol let str = "typeGuard"; let res = str.substr(4); console.log(res); // Guard substring substring(시작, 종료) 또는 substring(시작) 시작에서 종료까지 문자열을 자른다. 여기서 종료 위치는 -1이다. let str = ..

JavaScript Destructuring 구조 분해 할당

JavaScript Destructuring 구조 분해 할당 객체/배열을 분해하여 변수로 사용할 수 있게 해준다. 분해(Destructuring)는 파괴(Destructive)를 의미하지 않는다. 객체나 배열을 복사 후 변수로 분해 해준다는 의미다. 객체 구조 분해 - 중괄호 안 상수로 사용할 이름은 임의로 작성한다. 배열 구조 분해 - 대괄호 안 상수로 사용할 이름은 임의로 작성한다. - 콤마로 일부 반환값을 무시할 수 있다.

TypeScript 유틸리티 타입

TypeScript 유틸리티 타입 전역으로 사용 가능한 공통 타입 변환을 하기 위한 편의 기능의 집합이다. 중복 코드와 반복적인 행동을 피할 수 있게 해준다. partial - T의 모든 속성을 선택적 타입으로 구성한다. - User 인터페이스 속성 중 일부만 사용할 수 있다. Readonly - 인터페이스 생성 시 속성 앞 "readonly" 키워드를 한 번에 붙여주는 기능이다. Pick - T의 속성을 선택해 K의 새로운 타입으로 구성한다. Record - T의 프로퍼티 집합 K로 타입을 구성한다. 원하는 타입의 속성을 다른 타입에 매핑 시킬 수 있다. Omit - T의 모든 속성을 선택 후 K의 속성을 제거한 나머지 타입을 구성한다. ReturnType - T 함수의 반환 타입으로 구성된 타입을 만..