TypeScript Deep Dive
  • README
  • 시작하기
    • 왜 타입스크립트인가
  • 자바스크립트
    • 비교 연산자
    • 참조 연산자
    • Null vs. Undefined
    • this
    • 클로저
    • Number
    • Truthy
  • 미래의 자바스크립트
    • 클래스
      • 즉시실행함수
    • 화살표 함수
    • 나머지 연산자
    • let
    • const
    • 비구조화 할당
    • 전개 연산자
    • for...of
    • 이터레이터
    • 템플릿 리터럴
    • 프로미스
    • 제네레이터
    • Async Await
  • 프로젝트
    • 컴파일러 제어
      • tsconfig.json
      • 파일 경로 지정
    • 선언
    • 모듈화
      • 파일을 이용한 모듈화
      • globals.d.ts
    • 네임스페이스
    • 동적 표현식 가져오기
  • Node.js 시작하기
  • Browser 시작하기
  • 타입스크립트 타입 시스템
    • 자바스크립트 마이그레이션 가이드
    • @types
    • 주변 선언
      • 파일 선언
      • 변수
    • 인터페이스
    • 열거형(Enums)
    • lib.d.ts
    • 함수
    • 콜러블(Callable)
    • 타입 표명(Type Assertion)
    • 신선도(Freshness)
    • 타입 가드
    • 리터럴(Literal)
    • 읽기 전용(readonly)
    • 제네릭
    • 타입 인터페이스
    • 타입 호환성
    • Never 타입
    • 구별된 유니온
    • 인덱스 서명(Index Signature)
    • 타입 이동하기
    • 예외 처리
    • 믹스인(Mixin)
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • 타입스크립트 에러
    • 에러 메세지
    • 공통 에러
  • NPM
  • 테스트
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • ESLint
    • Changelog
  • 팁
    • 문자열 Enums
    • 타입 단언
    • 상태 저장 함수
    • 커링
    • 제네릭 타입 예시
    • 객체 타입 설정
    • 유용한 클래스
    • Import / Export
    • 속성 Setters
    • outFile 주의사항
    • 제이쿼리 팁
    • 정적 생성자
    • 싱글톤 패턴
    • 함수 파라미터
    • 토글 생성
    • Import 여러개 하기
    • 배열 생성
    • 생성자에서 타입정의
  • 스타일 가이드
  • 타입스크립트 컴파일러 구조
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page
  • const declarations must be initialized
  • Left hand side of assignment cannot be a constant
  • Block Scoped
  • Deep immutability
  • Prefer const

Was this helpful?

  1. 미래의 자바스크립트

const

const는 ES6와 타입스크립트에서 제공하는 매우 환영받는 추가 기능입니다. 그것은 불변성을 가지는 변수이며 불변성을 가지고 있습니다. 이것은 문서뿐만 아니라 런타임 관점에서도 매우 유용합니다. var를 const로 교체할 수 있습니다.

const foo = 123

구문은 사용자가 let constant foo을 입력하도록 강요하는 다른 언어보다 훨씬 뛰어납니다.

const 는 가독성과 유지보수성을 위한 좋은 선택이며 const 자체를 변수명으로 사용하는 것을 피해야 합니다.

// Low readability
if (x > 10) {
}

// Better!
const maxRows = 10
if (x > maxRows) {
}

const declarations must be initialized

아래의 코드는 컴파일러에서 에러를 발생시킵니다.

const foo // ERROR: const declarations must be initialized

Left hand side of assignment cannot be a constant

const 는 생성시점 이후에 불변입니다. 만약 당신이 새로운 값을 할당하려한다면 컴파일러가 에러를 발생시킵니다.

const foo = 123
foo = 456 // ERROR: Left-hand side of an assignment expression cannot be a constant

Block Scoped

const foo = 123
if (true) {
    const foo = 456 // Allowed as its a new variable limited to this `if` block
}

Deep immutability

const는 reference 변수를 보호하는 객체 리터럴에서도 잘 작동합니다.

const foo = { bar: 123 }
foo = { bar: 456 } // ERROR : Left hand side of an assignment expression cannot be a constant

객체의 속성은 언제든지 변경이 가능합니다.

const foo = { bar: 123 }
foo.bar = 456 // Allowed!
console.log(foo) // { bar: 456 }

Prefer const

변수를 생성 이후에 변경하는게 아니라면 항상 const 를 사용하고 그 외에는 let을 사용하십시요.

PreviousletNext비구조화 할당

Last updated 5 years ago

Was this helpful?

const 는 블록스코프이며 그와 비슷한 도 있습니다.

let