타입 선언과 타입 표명.

rO_Or·2023년 12월 19일

간단한 공부

목록 보기
1/12
interface User {
 email: string; 
}

const vi: User = {email: 'aaa@aaa.com'} // 타입 선언
// 선언하면 먼저 컴파일러가 이상이 없는지 판단해준다.

const jinx = {email: 'bbb@bbb.com'} as User // 타입 표명
// 표명을 하면 내가 이 변수는 어떤 타입이라고 컴파일러에게 알려준다.

// 타입 선언 방식이 더 효율적이고 일반적이다.

const a: User = {} // error
const b = {} as User // 에러가 발생하지 않음.

const c: User = {
 email: 'ccc@ccc.com',
 isActive: false
} // error

const d = {
 email: 'ddd@ddd.com',
 isActive: false
} as User; // 에러가 발생하지 않음.
// 이런 경우에는 타입 표명을 쓴다.
// <input type='text' id='email' />
const el = document.getElementById('email');
el?.value // error 발생

// HTMLElement라는 타입을 반환해 주는데, 이 타입에는 value라는 속성이 없다.
// HTMLElement 하위에 HTMLInputElement가 있고 이 타입에는 value라는 속성이 있다.

// 컴파일러는 어떤 타입인지 정확히 모른다 HTMLElement인지, HTMLInputElement인지.
// 이 경우 코드를 작성하는 사람이 어떤 타입인지 알고 있으므로 타입 표명을 쓰면 좋다.

const el2 = document.getElementById('email') as HTMLInputElement;
el2?.value // 에러가 발생하지 않음.

되도록이면 타입 선언을 쓰되, 후자의 경우에는 타입 표명을 써도 좋다.

profile
즐거워지고 싶다.

0개의 댓글