목록분류 전체보기 (164)
개발의변화
교차타입 여러가지 타입을 결합하여 하나의 단일 타입으로 만들 수 있다. &을 사용해서 표기한다. 결과물로 탄생한 단일 타입에는 타입별칭을 붙일 수도 있다. type ProductItem = { id: number; name: string; type: string; } type ProdutItemWithDiscount = ProductITem & { discountAmount : number} 유니온 타입(Union) 교차 타입(A & B)이 타입 A와 타입 B를 모두 만족하는 경우면 유니온타입은 타입A 또는 타입 B중 하나가 될 수 있는 타입을 말하고 A|B ``ts type CardItem = { id: number; name: string; type: string; } type PromotionEve..

any타입 자바스크립트는 암묵적으로 모든 타입을 any로 동적 타이핑을 하고 있다. 타입스크립트도 자바스크립트 위에서 동작하는 언어로 타입 추론시에 아무런 지정이 없다면 any를 리턴하고 이는 정적 타입의 타입스크립트 동작에 좋지 않다. 그렇기에 noImplicityAny를 넣어서 any동작을 제어하는 것이 좋다 하지만 어쩔수 없이 any타입을 사용해야 할 때가 있다. 개발 단계에서 임시로 값을 지정해야 할 떄 어떤 값을 받아올지 또는 넘겨줄지 정할 수 없을 때 값을 예측할 수 없을 때 암묵적으로 사용 하지만 타입을 설정하지 않으면 컴파일러에서는 오류가 나지 않지만 실제 런타임에서 심각한 오류가 발생할 수 있다. unknown타입 any타입과 유사하게 모든 타입의 값이 할당될 수 있다. 그러나 any말고..
값 vs 타입 값: 프로그램이 처리하기 위해 메모리에 저장하는 모든 데이터 객체 역시 값, 함수도 역시 값 자바스크립트는 모든 것이 객체이고 값 (런타임에 객체로 변환하기 때문) 커스텀 타입 type Person = { name: string; age: number; } interface Person { name: string; age: number; } 값 공간과 타입 공간의 이름은 서로 충돌하지 않기 때문에 타입과 변수를 같은 이름으로 정의할 수 있는데 타입스크립트가 자바스크립트의 슈퍼셋인 것과 관련이 있다. type으로 선언한 내용은 자바스크립트 런타임에서 제거되기 때문에 값 공간과 타입 공간은 서로 충돌X 하지만 타입과 값의 공간을 혼동할 수 있는 어려움이 있기에 클래스와 enum을 활용하면 된다..
function double(n) { return n * 2 } function double(n:number) { return n * 2 } double(2),double("s")의 실행을 각각 보면 javascript는 4, NaN typescript는 4, 에러 발생 으로 나타난다. 인자로 숫자가 아닌 다른 타입 값을 전달하면 의도치 않은 작업을 수행해서 원하는 값을 못 얻는다. 정적 타입과 동적 타입 자바스크립트에서 타입이 존재한다. undefined, null, Boolean, String, Symbol, Numberic, Object 하지만 개발자가 컴파일 이전에 타입을 직접 정의해 줄 필요가 없었을 뿐이었던 것이다.. 타입을 결정하는 시점에 따라 타입을 정적 타입과 동적 타입으로 분류할 수 있..
우테코 프리코스를 하면서 Jest를 처음 사용하기 시작했다. 처음엔 테스트를 돌리는데 왜 틀린 지에 대해 감이 안 잡혀 하루종일 테스트 코드 단 몇 문장을 뚫어지게 쳐다보기마 한 것 같다. Jest란? 페이스북에서 만들어 지금은 vitest 다음으로 많이 사용하고 있는 테스트 라이브러리이다. npm i -D jest 로 설치해주고 npm test 테스트 국룰 예약어 설정을 위해 "scripts":{ ... "test": "jest" } package.json에 추가하자 테스트 파일이나 폴더는 test.js로 끝내거나 __test__ 디렉터리 만들면 그 안에 파일은 다 테스트로 인식한다. 또한 하나의 테스트만 확인하고 싶으면 npm test 하면된다. Matchers 내가 짠 테스트의 실행값과 맞는 값을 ..
브라우저에서 제품을 만나는 첫 번째 지점 어떤 기능을 개발하는지 관계없이 개발자는 개발을 마치고 요구사항에 맞게 잘 동작 하는지 테스트를 해야한다. 테스트 코드를 작성해서 테스트하지 않더라도 직접 실행해보고 검증하는 과정은 꼭 필요하다. 프론트엔드 개발에 있어도 유저가 처음 확인하는 지점이기에 더욱 더 세심한 테스트가 필요하다. 테스트 종류 1. Static Test 정적테스트(Static Test):는 코드를 실행시키지 않고 테스트 하는 것 Type 에러나 Reference 에러와 같은 개발자의 실수로 인해 발생하는 에러를 미연에 방지할 수 있다. -- EsLint를 활용하여 사용하지 않는 변수나 Typescript로 함수의 인자로 받는 파라미터 타입 검사가 포함된다. 2. Unit Test 단위 테스..
1. 그리디 알고리즘 - 현재 상황에서 지금 당장 좋은 것만 고르는법 -> 나중에 미칠 영향을 생각하지 않는 것 사실 나중에 미칠 영향도 생각해야 하는 것 같다 정렬, 플로이드 워셜, 다익스트라 알고리즘과 같은 알고리즘을 어느 정도 알아야 하고 또한 창의력이 필요하기에 문제경험이 필요한 것 같다 2. 구현 완전탐색, 시뮬레이션으로 나눌 수 있다. 특히 시간복잡도를 확인하고 완전탐색으로도 해결할 수 있는지 파악하는게 중요하다 3. 자료구조 활용 - 배열 - 연결 리스트 배열의 추가/삭제 연산에 대해 비효율성을 극복하고자 등장한 데이터 구조, 다음 노드 연결에 대한 정보를 담은 포인터와 함께 노드에 저장 특징 새로운 요소가 추가될 때 런타임에 메모리를 할당한다. (동적 메모리 할당) Sequential Ac..
Javascript는 클래스라는 개념이 없다. 기존의 객체를 복사하여 새로운 객체를 생성하는 프로토타입 기반 언어이다. 객체 원형인 프로토아입을 통해 새로운 객체를 만들고 이 새로운 객체는 또 다른 객체의 원형이다. 프로토타입은 이러한 방식을 통해 객체를 확장하고 객체 지향적인 프로그래밍을 가능하게 한다. function Person() {}속성이 하나도 없는 Person이라는 함수가 정의되고 파싱단계에 들어가면, Person 함수 Prototype 속성은 프로토타입 객체 참조 프로토타입 객체 멤버인 constructor 속성은 Person 함수를 참조하는 구조 객체안에는 proto 속성이 존재 ->객체가 만들어지기 위해 사용된 프로토타입 객체를 숨은 링크로 참조 프로토타입 객체: 자신이 다른 객체의 원..