
npm i 설치settings.json 파일을 생성한뒤 아래와 같은 설정을 추가해줬다.{
"eslint.workingDirectories" : [
{ "mode" : "auto" }
]
}
Delte `CR` eslint(prettier/prettier)
타입스크립트 설정파일tsconfig.json 에서 "noImplicitAny"의 설정을 true로 변경
변경해주면 타입을 설정해주지 않은 변수들에서 빨간줄이 표시된다.
any란? string, number, array등 모든 타입을 통칭한다.
일종의 치트키 같은 것. 자바스크립트 원래 성질인 실행하는 시점에 타입을 구분한뒤 타입을 할당해주는 관점에서 any 와 비슷하다고 생각할 수 있다.
처음에 타입을 정의할때 any타입으로 먼저 지정하고 차근차근 구체적인 타입으로 정의해 나가는게 정상적인 방법
- 프로젝트시에는 any가 아니라 구체적으로 타입을 지정하는 방법을 권장
- but 타입을 잘 모르겠다면 any라도 붙여주자

void 란 함수의 반환 타입이 없다는 것을 명시적으로 지적해주는 것.
리턴값이 없는 함수들 같은 경우에는 void 를 추가해준다.
function addTodo(todo): void {}
[{ 객체 }]const todos = [
{ id: 1, title: '안녕', done: false },
{ id: 2, title: '타입', done: false },
{ id: 3, title: '스크립트', done: false },
]
let todoItems: object[];
filter란특정 조건에 해당하는 아이템만 필터링해주는 api
const arr = [
{ gender: 'male', name: 'john' },
{ gender: 'female', name: 'sarah' },
{ gender: 'male', name: 'bone' },
];
const filtered = arr.filter(function (item) {
if (item.gender === 'female') {
return item;
}
});
console.log(filtered);
$ node filter.js
[ { gender: 'female', name: 'sarah' } ]
function addTwoTodoItems(): void {
addTodo(); // 타입스크립트 상에서 인자값을 전달해주지 않아서 에러 발생
}


타입스크립트에서 에러의 원인을 알지 못했을때 마우스오버했을때 나오는 알림창을 읽어보면 원인을 파악할 수 있다.
오른쪽에 나오는 (ts2399)라는 error code로 구글링하면 자세한 자료를 찾을 수 있다.
function completeTodo(index: number, todo: object): void {
todo.done = true; // 오류난 부분
todoItems.splice(index, 1, todo);
}
'object' 형식에 'done' 속성이 없습니다. 라는 에러메세지의 의미는
- todo라는 파라미터의 타입이 object정의해줬기 때문에 object안에 'done' 이 있다는 것이 보장되지 않고 있다.
- 때문에 객체 형식안에서의 각 속성들을 구체적으로 정의해줘야 한다.
배열 안에 객체에 대한 구체적인 타입 정의
let todoItems: { id: number; title: string; done: boolean }[];
1.
function addTodo(todo: { id: number; title: string; done: boolean }): void {}
2.
function completeTodo(
index: number,
todo: { id: number; title: string; done: boolean }
): void {}
타입스크립트라는것은 어려운 개념이 아니라 자바스크립트의 타입을 명확하게 명시적으로 지정해준다라고 이해하면 된다.
interface를 이용해서 중복되는 타입을 간결하게 정의한다.// 변수에 인터페이스 활용
interface Todo {
id: number;
title: string;
done: boolean;
}
let todoItems: Todo[];