이제부터 타입스크립트 타입은 내가 정한다
- 개발자가 타입을 보증하니까 검사 ㄴㄴ
type Person = { name: string; age: number };
// 아래는 타입추론에서 : {} 어노테이션으로 판단
// 프로퍼티 name, age가 없으므로 오류
let who = {};
who.name = "hong";
who.age = 100;
// 필수 프로퍼티가 할당 안됨.
let who2: { name: string; age: number } = {};
// 옵션은 개발자의 의도가 아닌 회피 방법
let who3: { name?: string; age?: number } = {};
// 최종 책임을 개발자가 지겠다. 타입 검사 취소
let who4 = {} as Person;
who4.name = "hong";
who4.age = 12;
// who4.go = 100; // 잘 체크한다.
1. any 타입을 명확한 타입으로 단언
let value: any = "hello";
let count: number = (value as string).length;
2. DOM 을 활용할 때
const root = document.getElementById("root") as HTMLElement;
const inputTag = document.querySelector("input");
(inputTag as HTMLInputElement).value = "hi";
3. 유니온 타입중 하나를 지정하기
type User = { name: string };
type Admin = { name: string; admin: boolean };
let person: User | Admin = { name: "hong", admin: true };
console.log((person as Admin).name);
4. Null 이 아닌 값으로 단언
let tag = document.querySelector("div");
// 절대 null 아니라고 알려주기
(tag as HTMLDivElement).innerHTML = "hello, world";
5. const 단언
let num = 10 as const;
// as const 활용시 readonly 가 셋팅되서 변경 불가
let animal = {
name: "cat",
age: 10,
} as const;
animal.age = 10;
// 아래처럼 된다
let animal2: {
readonly name: "cat";
readonly age: 10;
};
