item 53

item 54

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 계층 구조

item 56

class PasswordChecker { 
	#passwordHash: number;
	constructor(passwordHash: number) { 
		this.#passwordHash = passwordHash;
	}

	checkPassword(password: string) {
		return hash(password) === this.#passwordHash;
	} 
}

const checker = new PasswordChecker(hash('s3cret')); 
checker.checkPassword('secret'); // Returns false 
checker.checkPassword('s3cret'); // Returns true

item 57