const obj = {
one: "uno",
two: "dos",
three: "tres",
};
for (const k in obj) {
const v = obj[k]; // ❌ obj에 인덱스 시그니처가 없기 때문에 엘리먼트는 암시적으로 'any' 타입입니다.
}
let k: keyof typeof obj; // 이렇게 k 값을 정의하는 것도 하나의 방법임.
interface ABC {
a: string;
b: string;
c: number;
}
function foo(abc: ABC) {
for (const [k, v] of Object.entries(abc)) {
k; // type : string
v; // type : any
}
}
item 55
dom 계층 구조
dom을 찾을 때 eventTarget이 window나 xmlHttpRequest로 되어 있다면 eventTarget 형식에 classList 속성이 없습니다등의 오류를 볼 수 있음.
dom 관련해선 ts보다 우리가 더 정확히 타입을 알고 있는 경우가 많기에 단언문을 사용해도 좋음.
Event타입은 가장 추상화된 이벤트임. Event에 clientY 속성이 없습니다등의 에러를 본다면 더 구체적인 타입을 지정할 필요가 있음.
item 56
public, protected, private 접근 제어자는 타입 시스템에서만 강제될 뿐임. 런타임에는 소용이 없기에 접근 제어자로 데이터를 감추려고 하지 말자.