"ADMIN_READONLY"와 같은 특정 문자열을 타입으로 지정할 수 있다."ADMIN_READONLY" | "USER"와 같은 형태로 사용된다.Role["ADMIN_READONLY"] = "ADMIN_READONLY";와 같은 식으로 객체의 속성들이 정의되며, 최종적으로 Role 변수에 할당된다.{
ADMIN_READONLY: "ADMIN_READONLY",
USER: "USER",
GUEST: "GUEST"
}Role은 런타임에서 사용할 수 있는 객체가 되어, Role.ADMIN_READONLY처럼 객체의 속성에 접근할 수 있게 된다.void 타입은 이 함수에 반환 구문이 없다는 것을 명시적으로 알려주는 타입이다.void 타입을 사용하는 함수는 콘솔에서 확인해보면 undefined를 반환하지만, undefined와 void는 다르다.undefined는 반환 구문이 있지만 아무것도 반환하지 않는다고 타입스크립트가 이해하게 된다.void는 본질적으로 반환 구문이 없는 함수에 사용된다.undefined는 매우 드문 경우에 사용된다.never 타입은 함수가 절대 아무것도 반환하지 않음을 명확하게 표현한다.throw를 통해 에러를 던지는 경우, 이 함수는 절대 정상적으로 반환되지 않으므로 반환 타입이 never가 된다.never로 지정하지 않으면, 타입스크립트는 이 함수를 void로 추론할 수 있다.