글 목록
-
[이펙티브TS] DOM 계층구조 이해하기 (아이템 55)
브라우저 타입 오류 function handleDrag(eDown: Event) { const targetEl = eDown.currentTarget; targetEl.classList.add("dragging"); // ~~~~~~~ Object is possibly 'null'. // ~~~~~~~~~ Property 'classList' does not exist on type 'EventTarget' const dragStart = [eDown.clientX, eDown.clientY]; // ~~~~~~~ Property 'clientX' does not exist on 'Event' // ~~~~~~~ Property 'clientY' does not exist on 'Event' const ..
2023.08.14
-
[TS] 타입 좁히기
타입 좁히기( 타입스크립트 핸드북 ) 원본 보기 function padLeft(padding: number | string, input: string) { return " ".repeat(padding) + input; // Argument of type 'string | number' is not assignable to parameter of type 'number'. Type 'string' is not assignable to type 'number'. 이 코드는 string|number 타입을 repeat의 인자로 넘기려고 해서 문제가 발생한다. repeat는 number 타입만 받을 수 있다. typeof narrowing function padLeft(padding: number | stri..
2023.08.13
-
'rm'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는배치 파일이 아닙니다.
$ rm -rf dist && node ./scripts/build.js 'rm'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. package.json에서 scripts를 작성하고 실행시키니 이런 오류가 문구 출력됨. rm은 윈도우에서 동작하지 않는 명령어이다. 윈도우 환경에서는 rmdir로 변경해 주어야 한다. 또한 -rf도 rm의 명령어이기 때문에 /s 로 변경해 준다. -rf와 /s 둘다 재귀적으로 지정한 디렉토리 내부를 삭제하라는 뜻이다. /s의 경우 실행 전에 실행하겠냐고 묻는 메시지가 나타나기 때문에 이 과정을 생략하려면 /q 명령어도 추가해준다. // 고친 스크립트 "build": "rmdir /s /q dist && node ./scripts/buil..
2023.08.13
-
[이펙티브TS] 오버로딩보다 조건부 타입 사용하기(아이템 50)
function double(x) { return x + x; } double 함수에는 string이나 number가 들어올 수 있다. function double(x: number | string): number | string; function double(x: any) { return x + x; } const num = double(12); // number|string const str = double("x"); // number|string 이런 결과 나옴. 타입이 아직 포괄적이다... 제네릭을 사용하면? function double(x: T): T; function double(x: any) { return x + x; } const num = double(12); // 12 const st..
2023.08.12
-
[프로그래머스] n^2 배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/87390 문제 설명 정수 n, left, right가 주어집니다. 다음 과정을 거쳐서 1차원 배열을 만들고자 합니다. n행 n열 크기의 비어있는 2차원 배열을 만듭니다. i = 1, 2, 3, ..., n에 대해서, 다음 과정을 반복합니다. 1행 1열부터 i행 i열까지의 영역 내의 모든 빈 칸을 숫자 i로 채웁니다. 1행, 2행, ..., n행을 잘라내어 모두 이어붙인 새로운 1차원 배열을 만듭니다. 새로운 1차원 배열을 arr이라 할 때, arr[left], arr[left+1], ..., arr[right]만 남기고 나머지는 지웁니다. 정수 n, left, right가 매개변수로 주어집니다. 주어..
2023.07.21
-
[프로그래머스] 기능개발
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..
2023.07.14