[취업준비일지] - 2
1.TypeScript는 JavaScript의 superset 언어이기 때문에 정적 타입의 특징을 가진다는 것을 제외하면 JavaScript와 거의 유사한 형식을 가지고 있다.(JS는 동적)
각 데이터에 type을 지정해 대규모 프로젝트에서 충돌이 날 가능성을 없애준다.
2.npm install typescript를 사용해 설치할 수 있으며 .js가 아닌 .ts를 통해 파일명을 설정해줘야한다.
작동을 시킬 때는 npx tsc를 사용해야하며 추가적 설정을 통해 구동할 파일들을 설정해야 하는데
특정 부분들의 작동이 되는지를 확인하기 위해서는 npx tsc xxx.ts를 사용해 특정 파일만 컴파일시킬 수 있다.
3.작동하는 형태는 JS파일로 생성하는 것과 유사하지만 TS파일을 이용해 작성할 경우 즉각적인 type체크가 있으며 컴파일 할 경우 추가적 에러를 포착할 수 있다는 가능성이 있다.
(에러가 있는 경우에도 js파일은 생성되기 때문에 에러 메세지를 잘 확인해야 한다.)
4.타입을 지정할 때는 객체의 키,값처럼 변수명:type 형태로 선언해야 하고
type명은 소문자로 해야 한다.
5.일반적으로 number, string, boolean을 주로 사용하며 arrays, objects, parameters도 사용할 수 있다.
null, undefined는 사용할 '수'는 있지만 일반적으로는 사용하지 않는다.
type를 적용하지 않은 경우 default값으로 any type이 지정되어 있는데 이는 말 그대로 아무 값이나 들어갈 수 있는 기본형태를 의미한다.
배열 내부의 데이터들의 type을 지정하고 싶은 경우 type[] 등으로 type를 선언하며
객체의 경우는 객체가 중요한 것이 아니라 내부 키들의 data type이 중요하기 때문에 객체 내부 값들의 type를 지정해준다. let xxx:{a : string; b : number}
(여기서 중요한 포인트는 키:값이 아니기 때문에 ,로 나누지 않고 ;로 나눈다는 점 같다)
6.type 추론이라는 기능이 있기 때문에 특정 타입을 선언과 함께 할당하는 경우 그 변수에 다른 타입을 할당하려고 하면 에러가 발생하는데 이것이 바로 type 추론이다.
7.단일 type만 사용하는 것이 아닌데 type 추론에 걸려 제대로 사용하지 못할 때는 union type 기능을 사용해야 한다.
이것은 조건문의 or 기능인 ||(파이프 문자)을 하나만 사용해서 여러개를 지정할 수 있다.
(let xxx : number | string | boolean = 'xxx')
8.복잡한 type을 중복해서 사용할 경우 편의성을 위해 type형 변수를 만들 수 있다.
type Xxxx(첫글자 대문자) = {name : string ; age : number;}
9.함수의 경우 매개변수의 type뿐 아니라 반환 값의 type도 중요한데 이 부분은 기본적으로 추론을 통해 자동 설정되지만 생각과는 다른 결과가 나오거나 다른 가능성도 열어둬야 하는 경우에는 매개변수 소괄호가 종료된 다음 :type를 사용해 지정해줄 수 있다.
또한 반환(return)이 없는 경우 기본적으로 void type이 지정된다.
10.Generics라는 type의 경우 함수에서 값이 들어올 때 유동적으로 추론할 수 있게 도와준다.
function xxxxx<T>(array:T[], value:T){}
위 함수를 시행할 경우 array 및 value에 동일한 type이 들어갈 경우 반환되는 type도 당연히 같은 type임을 추론해 함수의 결과를 할당할 경우 해당 변수도 추론된 type값을 가지게 한다.
11.TypeScript와 React를 사용할 경우 CRA를 사용하는데 명령어는 다음과 같다.
npx create-react-app "Project Name" --template typescript
12.선택(selection)정렬 또한 버블정렬과 유사하게 최선, 평균, 최악 모두 O(N^2)이지만 버블정렬에서의 목적지까지 한칸씩 반복적으로 이동해야 하는 것에 비해 최소값 여부만 비교한 후 제일 앞으로 이동시키는 1회성 이동이기 때문에 교환이 많이 필요한 경우 버블정렬보다 효율적이다.
또한 버블정렬처럼 본인 데이터끼리의 교환을 통해 정렬하는 방식이기 때문에 메모리 공간을 요구하지 않는다.
13.http는 stateless의 특성을 가지고 있기 때문에 이를 보완하기 위해 cookie를 만들었다.
(1).백준 2455번 지능형 기차는 승객이 가장 많이 탔을 때의 승객 수를 구하는 문제였다.
Max값을 지정한 다음 비교를 통해 더 클 경우 교체했다.
let input = `0 32
3 13
28 25
39 0`.split('\n')
let sum = 0
let maxSum = 0
for(let i = 0 ; i < input.length ; i++){
let [a,b] = input[i].split(' ').map(Number)
sum = sum +b -a
if(sum > maxSum){
maxSum = sum
}
}
console.log(maxSum)