const와 readonly의 차이
const
const로 선언된 객체의 속성은 바꿀 수 있다. 즉, 재할당 가능과 객체의 속성 변경 가능은 서로 독립적인 내용이다.
-> 컴파일 시 정해진 불변 값이며 프로그램이 종료될 때까지 변경할 수 없다.
-> 상수는 기본적으로 static(정적)이다. 따라서 접근할 때 객체 필요없다.
readonly
TS에서 readonly 키워드를 통해 특정 속성의 변경을 막을 수 있다.
type ReadOnlyType = {
readonly prop: InnerType;
}
type InnerType = {
innerProp: string;
}
const readonlyType: ReadonlyType = {
prop: {
innerProp: 'a'
}
}
// readonlyType.prop.innerProp 속성은 변경 가능
readonlyType.prop.innerProp = 'b';
// readOnlyType.prop 속성은 변경 불가능
readOnlyType.prop = { innerProp: 'ab' }
이때, 주의할 점은 readonly 접근 제어자의 경우 shallow하게 동작한다는 것!!
readOnly prop 속성은 readonly 키워드가 있기 때문에 변경 불가능하지만, prop의 innerProp의 경우에는 readonly 키워드가 아니기 때문에 변경 가능하다.
-> 불변 값이지만 런타임에 정해지며, 마찬가지로 프로그램이 종료될 때까지 값을 변경할 수 없다.
-> readonly는 non-static(비정적)변수와 유사하게 동작한다. 따라서 접근하기 위해 객체가 필요하다.
- Compiletime과 Runtime의 차이
Compiletime은 개발자가 작성한 소스코드를 컴파일하여 기계어로 변환하는 과정
Runtime은 컴파일을 마친 프로그램이 사용자에 의해 실행되어 동작되어질 때
참고한 블로그
컴파일타임(compiletime)과 런타임(runtime)
컴파일타임(compiletime)과 런타임(runtime) 타입스크립트를 공부하던 중 컴파일타임과 런타임의 구분이 궁금해졌다. 구분 런타임(Runtime)과 컴파일타임(Compiletime)은 소프트웨어 프로그램 개발의 서로
ryusm.tistory.com
https://developer-talk.tistory.com/305
[C#]const와 readonly 차이점
const와 readonly 키워드 C#의 const 키워드는 변수를 상수로 만들며, readonly 키워드는 변수를 읽기 전용으로 만듭니다. 이 두 가지 키워드는 '값을 변경할 수 없다'라는 관점에서는 동일하게 보이지만,
developer-talk.tistory.com
[이펙티브 타입스크립트+17] 변경 관련된 오류 방지를 위해 readonly 사용하기
2장 타입스크립트의 타입 시스템 아이템 17 | 변경 관련된 오류 방지를 위해 readonly 사용하기 3줄 요약 1. 객체 property 앞에 붙는 readonly와 array, 튜플 타입 앞에 붙는 readonly의 차이를 이해하자. 2. 객
junghyunkim.tistory.com