프론트엔드✏️/코드캠프
Javascript vs TypeScript
당근먹는하니
2022. 6. 30. 15:56
728x90
반응형
잠깐이나마 배웠었던 C++과 비교해서 얘기하자면, C++은 변수를 선언할 때부터 int인지 string인지 정하고 선언한다.
int num = 3;
string str = "3";
이런식으로 선언을 하고, 둘이 더하거나 빼려는 작업을 하면 자료형이 달라서 애초에 계산이 안된다.
let minus = 1-'1';// 0
let sum = 1+'1'; // '11'
그에 비해 자바스크립트는 굉장히 유연하다. 숫자와 문자열을 더하고 빼는 것이 가능하다. (결과는 좀 다른 양상인데, 이유는 모르겠음)
타입스크립트는 자바스크립트의 기반의 언어다.
자바스크립트는 클라이언트 측 스크립트 언어, 타입스크립트는 객체 지향 컴파일 언어다.
위에 C++이 컴파일 언어인데, 컴파일 할 때 컴파일러가 오류를 잡아낼 수 있다.(모든 오류를 잡아내는 것은 아님)
타입스크립트도 마찬가지로 컴파일 타이밍에 오류를 포착한다.
타입스크립트의 이름에서 알 수 있듯이 타입을 지정해줘야 한다. 타입을 지정해주지 않으면 타입을 추론한다.
export interface IUpdateBoardInput {
title?: string;
contents?: string;
youtubeUrl?: string;
boardAddress?: {
zipcode?: string;
address?: string;
addressDetail?: string;
};
images?: string[];
}
ts파일에 type들만 모아서 정리해놓고 export 시킨 후, 쓰는 곳에서 import해서 쓰는 방법도 있다.
export interface IBoardWriteUIProps {
isActive: boolean;
writerError: string;
passwordError: string;
titleError: string;
contentsError: string;
onChangeWriter: (event: ChangeEvent<HTMLInputElement>) => void;
onChangePassword: (event: ChangeEvent<HTMLInputElement>) => void;
onChangeTitle: (event: ChangeEvent<HTMLInputElement>) => void;
onChangeContents: (event: ChangeEvent<HTMLTextAreaElement>) => void;
onChangeYoutubeUrl: (event: ChangeEvent<HTMLInputElement>) => void;
onChangeAddressDetail: (event: ChangeEvent<HTMLInputElement>) => void;
onClickAddressSearch: () => void;
onCompleteAddressSearch: (data: any) => void;
onChangeFileUrls: (fileUrls: string, index: number) => void;
onClickSubmit: () => void;
onClickUpdate: () => void;
isEdit: boolean;
data?: any;
isOpen: boolean;
zipcode: string;
address: string;
addressDetail: string;
fileUrls: string[];
}
함수 또한 타입 지정이 가능하다.
있을 수도 있고 없을 수도 있는 건 타입 지정을 banana?: String 이런식으로 ?를 넣어서 해준다.
타입스크립트를 깔면 빨간줄이 좌라라락 뜨기 때문에 거슬린다... 그리고 바닐라 자바스크립트보단 쓰기 조금 번거로울 순 있지만, 다른 타입의 데이터를 넣는 등의 실수를 방지할 수 있다.
프리캠프 할 때 봤던 영상
728x90
반응형