Backend/파본것들

const와 readonly의 차이

hsooooo 2023. 1. 28. 21:24

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은 컴파일을 마친 프로그램이 사용자에 의해 실행되어 동작되어질 때

 

 

참고한 블로그

https://ryusm.tistory.com/147

 

컴파일타임(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

https://junghyunkim.tistory.com/entry/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%ED%83%80%EC%9E%85%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B817-%EB%B3%80%EA%B2%BD-%EA%B4%80%EB%A0%A8%EB%90%9C-%EC%98%A4%EB%A5%98-%EB%B0%A9%EC%A7%80%EB%A5%BC-%EC%9C%84%ED%95%B4-readonly-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

[이펙티브 타입스크립트+17] 변경 관련된 오류 방지를 위해 readonly 사용하기

2장 타입스크립트의 타입 시스템 아이템 17 | 변경 관련된 오류 방지를 위해 readonly 사용하기 3줄 요약 1. 객체 property 앞에 붙는 readonly와 array, 튜플 타입 앞에 붙는 readonly의 차이를 이해하자. 2. 객

junghyunkim.tistory.com