목록전체 글 (161)
지영이의 개발 블로그
어떤 변수는 1이라는 값만 가질 수 있게 제한하고 싶으면 어쩌죠. 자바스크립트 const 변수 쓰면 되겠군요. 근데 1 또는 0만 가질 수 있게 제한하고 싶으면 어쩌죠. 그 변수에 number 이런 식으로 타입을 지정하면 너무 광범위하지않습니까. 그럴 땐 Literal type을 선언하도록 합시다. 어떤 변수가 미리 골라놓은 데이터만 가질 수 있게 도와줍니다. Literal Type 만드는 법 string, number 이런 것만 타입이 될 수 있는게 아닙니다.일반 글자같은 것도 타입이 될 수 있습니다. let john :'대머리'; let kim :'솔로'; '대머리', '솔로'라는 타입을 만들었습니다 마음대로 변수나 함수에 할당 가능합니다. 그럼 신기하게도 john이라는 변수는 이제 '대머리' 라는 ..
타입 정의가 너무 길면 Type Aliases let 동물 :string | number | undefined; 코드 열심히 짜다보면 매우 길고 복잡하게 타입을 나열하는 경우가 많습니다. 이게 길고 보기싫고 나중에 또 사용하고 싶으면 변수에 담아쓰십시오. 변수만드는 것 처럼 type 이라는 키워드를 쓰면 됩니다. type 키워드 쓰는걸 type alias 라고 합니다. type Animal = string | number | undefined; let 동물 :Animal; type 타입변수명 = 타입종류 타입을 변수처럼 만들어서 쓰는 alias 문법입니다. 관습적으로 대문자로 시작합니다. 일반 자바스크립트 변수랑 차별을 두기 위해 AnimalType 이런 식으로 작명하는게 좋을거 같네요 object 타입..
function 내함수(x :number | string){ return x + 1 //에러남 } Operator '+' cannot be applied to types 'string | number' and 'number' 라는 에러가 납니다. string | number 같은 union type 에는 일반적으로 조작을 못하게 막아놔서 그렇습니다. 이런 메세지를 보면 1. 타입을 하나로 Narrowing 해주거나 2. Assert 해주거나 둘 중 하나 해주면 됩니다. Type Narrowing if문 등으로 타입을 하나로 정해주는 것을 뜻합니다. function 내함수(x :number | string){ if (typeof x === 'number') { return x + 1 } else if (t..
함수에 타입지정 그래서 함수는 총 두 군데 타입지정이 가능합니다. 1. 함수로 들어오는 자료 (파라미터) 2. 함수에서 나가는 자료 (return) function 내함수(x :number) :number { return x * 2 } 1. 함수로 들어오는 파라미터 타입지정은 파라미터 옆에 적으면 됩니다. 2. 함수가 실행된 후 남는 값 (return 우측에 있는 값) 타입지정하고 싶으면 함수명() 우측에 적으면 됩니다. - 파라미터에 타입을 지정하면 필수 파라미터가 됩니다. void 타입 함수는 특이하게도 void라는 타입을 사용가능합니다. '아무것도 없이 공허함'을 뜻하는 타입인데 return할 자료가 없는 함수의 타입으로 사용가능합니다. function 내함수(x :number) :void { re..

원본코드처럼 api를 무분별하게 호출하게 된다면 대규모 프로젝트에 투입하게 됐을때 네트워크통신이 계속해서 중첩되면서 버그가 생길수도 있고 시간과 비용을 낭비된다. 이를 위해 네트워크 통신하는 컴포넌트를 따로 모아놓은 class를 만들어 놓고 거기서 필요한 것을 컴포넌트 안에다가 injection + dependency하게 해주면 코드의 단순화 뿐만 아니라 재사용을 높혀줄 수있다 여기서 injection + dependency 이란 내부에서 만든 변수를 외부에서 넣어주는 것이다. Dependency 의존 관계를 가지는 상황에 대한 이해를 하시면 될 것 같습니다. 예를 들어 B 클래스에서A 클래스를 내부에 변수로 사용하게 됨으로써 B 클래스는 A 클래스에 의존관계가 생기게 됩니다. Injection 내부가 ..

모듈이란? 자바스크립트로 개발을 하다보면 코드의 재사용이나 유지보수 측면에서 파일을 여러개로 분리 해서 개발 하곤 하는데 이렇게 분리된 파일을 모듈 이라고 합니다. 자바스크립트 코드를 모듈로 분리하게 되면 이러한 모듈을 필요한 어떤곳에서든 재사용이 가능하기 때문에 자주 사용하는 코드같은 경우에는 모듈로 분리해서 개발합니다 이렇게 웹 애플리케이션이 완성이 되면 웹서버라는 공간에 배포를 하게 되고 사용자가 브라우저를 통해 웹 사이트에 접근을 하게 되면 브라우저는 사용자들에게 UI를 보여주기 위해 웹서버에 HTML,CSS,JAVASCRIPT같은 자원(resource)를 요청 하게 됩니다 . 웹서버는 준비된 자원을 브라우저에게 응답함으로써 사용자들은 ui를 볼수있게 되는것 하지만 개발 편의성을 위해 모듈을 계속..
Union type 사용 "이 변수엔 string 또는 number가 들어올 수 있습니다~" 라고 타입정의를 하고싶으면 | 연산자를 씁시다. OR 연산자 같은 느낌인데 이런 타입을 전문용어로 Union type 이라고 부릅니다. let 이름: string | number = 'kim'; let 나이: (string | number) = 100; 괄호를 해주면 됩니다. name, age 변수엔 string 또는 number만 들어올 수 있습니다. 그리고 할당하는 순간 타입은 string 또는 number 중 하나로 변합니다. 그럼 array, object 자료 만들 때 union type (OR 연산자) 쓰려면 어떻게 할까요 var 어레이: number[] = [1,'2',3] var 오브젝트: {data..

✔문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 ..