개발언어
-
TypeScript의 함수 2 (Overloading)개발언어/TypeScript 2022. 6. 12. 16:21
Overloading function overloading / method overloading 실제로 오버로딩된 함수를 직접 작성하지는 않을것이다. 그 대신 대부분 다른 사람이 만든 외부 라이브러리를 사용할 텐데, 이런 패키지나 라이브러리 들은 오버로딩을 엄청 많이 사용한다. 그래서 오버로딩에대해 제대로 알아 두는 것은 중요하다. 좀 더 긴 방식의 call signature 작성 방법 위 와 같은 방법이 존재하는 이유은 오버로딩 때문이다. Overoloading은 무엇일까? => 오버로딩은 함수가 여러개의 call signatures를 가지고 있을 때 발생한다. 그냥 여러 개 가 아니라 서로 다른 여러개의 call signature을 가졌을 때 발생하는 것이다. 위 코드의 Add라는 함수는 첫번째 모양..
-
TypeScript의 함수 1(Call Signatures)개발언어/TypeScript 2022. 6. 12. 13:13
Call Signatures 다형성(polymorphism) / 오버로딩(overloading) / 제네릭(generics) 위 와 같이 함수를 정의 하면 ts는 위의 함수들이 return할 값이 number라는 것을 추측할 수 있다. 만약 add함수만의 타입을 만들고 싶다면? => call signature call signatures라는 것은 함수 위에 마우스를 올렸을 때 보게 되는 것을 말한다. 위 그림과 같은 것을 call signatures라고 한다. call signatures라는 것은 함수를 어떻게 호출해야 하는 것인지 알려준다. 더불어 함수의 반환 타입도 알려준다. 이건 함수가 어떻게 구현되는지를 알려주는 것이 아니라 함수의 타입, 인자(argurents)의 타입, 함수의 반환 타입을 알려..
-
Type of TS part Three개발언어/TypeScript 2022. 6. 12. 12:33
Never - never는 함수가 반환 하는 type이 두 가지 일 수도 있는 상황에 쓰이기도 한다. 위 코드의 함수안에서 위와 같은 코드를 작성하는 것은 불가능 하다. 왜냐하면 name의 type이 string일 수도 있기 때문이다. 위 와 같이 typeof 를 사용해서 name 변수의 type을 check한 다음에만 name의 type을 확정해서 코드를 작성할 수 있다. 그리고 마지막 else안에서의 name의 type은 never이다. 즉 else의 코드 블럭은 절대 실행되지 말아야 한다는 의미이다. type이 제대로 들어 와서 string이거나 number이면 마지막 else 코드 블럭은 절대로 실행되는 일이 없을 것이다. [출처 - https://nomadcoders.co/typescript-f..
-
async와 await 그리고 유용한 Promise APIs개발언어/JavaScript 2022. 6. 10. 15:59
async / await promise를 계속 chaining하다 코드가 지저분해 지기 쉽상이다. 이런 것 위에 좀더 간편한 api로 async와 await을 사용하면 promise를 좀더 간편하고 간결하게 사용할 수 있게 해주고, promise가 좀 더 동기적으로 실행되는 것 처럼 보일 수 있도록 해준다. async와 await 새로운 것이 추가된 것이 아니라 기존에 존재하는 promise 위에 조금더 간편한 api를 제공하는 것이다. 이렇게 기존에 존재하는 것 위에 또는 기존에 존재하는 것을 감싸서 조금더 간편한 api를 제공하는 것을 syntatic sugar라고 한다. 예) JavaScript에서 class는 전혀 새로운 것이 아니라 prototype을 기본으로한 syntatic sugar이다. ..
-
Promise 개념부터 활용개발언어/JavaScript 2022. 6. 9. 14:18
Promise JavaScript에서 제공하는 비동기 처리를 간편하게 할 수 있도록 도와주는 Object이다. callback 함수를 사용하지 않고 비동기 코드를 깔끔하게 처리하게 해준다. Promise는 정해진 장시간의 기능을 수행하고 나서, 정상적으로 기능이 수행되어 졌다면 성공의 message와 함께 처리의 결과 값을 전달해주고, 기능을 수행하다 예상치 못한 문제가 발생했다면, error를 전달해 준다. JavaScript안에 내장 되어 있는 Object이다. asynchronous operation을 위해서 사용된다. 비동기적 코드를 사용할 때 callback 함수 대신 유용하게 사용할 수 있다. 두가지 Point 1. state 프로세스가 무거운 operation을 실행하고 있는 중인지, 아니면..
-
비동기 처리의 시작 Callback 이해하기개발언어/JavaScript 2022. 6. 8. 14:41
JavaScript는 동기적인 언어이다. hoisting이 된 이후 부터 코드가 작성한 순서에 맞추어서, 하나하나 씩 동기적으로 실행 된다는 의미이다. *hoisting : var(변수) 혹은 function(함수) 선어들이 자동적으로 제일 위로 올라가는 것을 의한다. 함수 setTimeout() 브라우저에서 제공되는 api로, 지정한 시간이 지나면, 지정한 callback함수를 호출하는 것이다. 해당 함수에는 handler:TimeHandler라는 callback함수를 전달해주고, 어느정도 시간을 timeout할 것 인지 지정해주는 인자들이 존재한다. 해당 함수의 callback함수를 전달한 인자만큼의 시간뒤에 실행해달라고 브라우저에게 요청한다. 브라우저 api는 무조건 브라우저에게 먼저 요청을 보내게..
-
JavaScript Closure개발언어/JavaScript 2022. 4. 3. 13:43
JavaScript자체는 함수를 정의하지 않고, 함수를 객체로 만들어서 함수가 정의된 것으로 여긴다. 또 함수를 객체로 만들기 때문에 그 함수 객체가 반환 될 수도 있고, 함수가 함수 안에서 만들어 질 수도 있고, 그러다 보니까 함수가 가진 지역변수에 대한 문제가 클로저라 것의 필요성을 발생시켰다. 변수 생명주기와 클로저(Closure) 함수가 하나 정의되어 있고 var라는 키워드를 사용해서 a를 선언했기 때문에 a는 함수 안에서만 사용할 수 있는 지역변수 이다. 누군가 f1()을 호출하게 되고, 그 값을 반환 받게 되면, 당연히 1이 반환되게 된다. 함수안에서 선언되었던 a라는 변수는 함수안에서 생명주기를 살아있게된다. 그리고 f1()함수가 가지고 있던 자원들은 모두 해지된다. JavaScript는 함..
-
Eval함수로 JSON파싱 하기개발언어/JavaScript 2022. 4. 3. 09:47
Eval함수 이용 그림1은 JavaScript 코드로 사용될 수 있는 형태로 되어 있지만 사실 보편적으로 이런 형식으로 데이터를 받지는 않는다. ( +추후에 script에서 원격에 있는 문서를 읽어 오는 방법을 배우될 것이다.) script로 원격에 있는 문서를 읽어 오면 data 변수안에 Object객체 배열은 String 형태로 가져오게 된다. (JavaScript에서는 문자열 내려쓰기가 인정되지 않기 때문에 문장을 내려 쓸때는 " \" (역슬래시)를 내리기 전 문장 끝에 표가해 주어야 한다.) 그림3과 같은 console.log에 값을 뽑아 낼 수 없다. data안에 fomat은 완벽하게 JSON형식을 따르고 있지만, 변수 데이터는 거대한 하나의 문자열일 뿐이다. data[0] 이라고 하면 문자열 ..