타입 안정성: 변수나 함수의 타입을 명확히 하여 컴파일 시점에서 오류를 방지할 수 있다.
자동완성: 개발 도구에서 자동 완성 기능이 더 강력해져, 코드 작성이 더 빠르고 오류가 줄어든다.
유지보수성 향상: 코드 변경 시 타입 오류를 미리 확인할 수 있어 유지보수가 용이하다.
[예시]
//원래는 null일 수도 있다고 뜹니다.
const inputElement = document.getElementById("myInput") as HTMLInputElement;
inputElement.value = "Hellow, world!";
위의 코드는 'myInput아이디를 통해 가져온 태그는 인풋 태그야'라고 단언해주는 예시이다.
이유는 해당 아이디를 통해 가져온 태그가 div인지 a태그인지 알 수 없음
만약 myInput아이디에 해당하는 태그가 div였다면?
inputElement.value는 에러가 뜬다. div에는 value가 없기 때문이다.
partial은 모든 속성이 선택적(Optional)인 타입을 만든다. 객체의 일부 속성만 업데이트하거나 초기화할 때 유용하다interface Todo {
title: string;
dexcription: string;
completed: boolean;
}
const todo: Todo = {title: "study", description: "Learn", ccompleted: false};
// partial을 사용하면 선택적으로 사용 가능
const partialTodo:Partial<Todo> = {completed:true}
Pick은 객체 타입에서 특정 속성만 선택하여 새로운 타입을 만든다. 객체의 일부 속성만 필요할 때 유용하다.interface Todo {
title: string;
description: string;
completed: boolean;
}
type PickTodo = Pick<Todo, 'title'|'completed'>;
const todo: PickTodo = {
title: "Study",
completed: false,
}Omit은 객체 타입에서 특정 속성을 제외하고 새로운 타입을 만든다. 객체의 일부 속성을 제외한 나머지를 사용할 때 유용하다.interface Todo {
title: string;
dexcription: string;
completed: boolean;
}
type TodoWithoutDescription = Omit<Todo,'discription'>
const todo: TodoWithoutDescription = {
title: "study",
compoleted: false,
}Record는 특덩 키 타입(k)과 값 타입(T)을 가지는 객체 타입을 만든다. 객체의 키와 값의 타입을 동적으로 설정할 때 유용하다.type = PageInfo = {
title: string;
}
type page = 'home' | 'about' | 'contact' ;
const pages: Record<Page, PageInfo> = {
home: {title: "Home Page"},
about: {title: "About Page"},
contact: {title: "Contact Page"},
}
여기까지 기본적인 TypeScript에 대해 개념을 정리해보았다.
이 전에 강의들으면서 한번 들었던 내용인데
다시 한번 강의를 들으며 복습하니까 머릿속에서 정리가 좀 되는 것 같다.