Interface를 정의하고 키값을 타입으로 사용할때
interface Conifg { title : string favicon :? string } const config:Config = { title : 'title', favicon : './favicon.ico' } function getConfig(key: string, defaultValue:? string){ return config[key] ?? defaultValue }
위와 같은 인터페이스와 함수가 있다고 가정하자
앞으로 설정값이 얼마나 늘어날지 모르는 상황에
const ConfigKeys = 'title' | 'favicon'
위와 같이 계속 문자열을 허용하는 타입을 계속 추가할 수도 없는 노릇.
keyof 사용하여 interface의 키목록 가져와 체크하기
function getConfig(key: keyof Config, defaultValue:? string)
keyof 키워드를 사용하여 체크하면 인터페이스에만 추가하더라도 해당 인터페이스를 사용하는 곳은 자동으로 체크 할 수있다
type ConfigKeys = keyof Config // 'title' | 'favicon'