readonly

👶 TypeScript

타입 넓히기 - const 타입

타입 넓히기(type widening) 타입 넓히기는 TypeScript의 타입 추론이 어떻게 동작하는지 이해하는 데 필요한 핵심 개념입니다. TypeScript는 타입을 정밀하게 추론하기보다는 일반적으로 추론합니다. (덕분에 프로그래머의 삶이 편해집니다) let이나 var로 값을 바꿀 수 있는 변수를 선언하면 그 변수의 타입이 리터럴 값에서 리터럴 값이 속한 기본 타입으로 넓혀집니다. let a = 'x' // let a: string let b = 2 // let b: number var c = true // boolean const d = { x: 4} // (property) x: number enum E {A, B, C} let e = E.A // let e: E 값을 바꿀 수 없는 변수에선 상..

👶 TypeScript

Tuple

튜플(Tuple) 튜플(Tuple)은 배열의 서브 타입이며 객체입니다. 튜플은 길이가 고정되었고, 각 인덱스의 타입이 알려진 배열의 일종입니다. 다른 타입과 달리 튜플은 선언할 때 타입을 명시해야 합니다. JavaScript에선 배열과 튜플에 같은 문법(대괄호)을 사용하는데, TypeScript에선 대괄호를 배열 타입으로 추론하기 때문입니다. let a: [number] = [1]; // [이름, 성씨, 생년] 튜플 let b: [string, string, number] = ['tom', 'Bae', 1996]; b = ['princess', 'white', 'ii', 1200]; // error TS2322: 'string'은 'number' 타입에 할당할 수 없음 튜플은 선택형 요소도 지원합니다. ..

👶 TypeScript

객체(Object)

객체(Object) TypeScript의 객체(object) 타입은 객체의 형태(shape)를 정의합니다. 그러나 객체 타입만으로는 ({}로 만든) 간단한 객체와 (new를 사용해 만든) 복잡한 객체를 구분할 수 없습니다. 이는 JavaScript가 구조 기반 타입(structural type)을 갖도록 설계되었기 때문입니다. 따라서 TypeScript도 이름 기반 타입(nominal type) 스타일보다는 JavaScript 스타일을 선호합니다. 구조 기반 타입화 구조 기반 타입화에선 객체의 이름에 상관없이 객체가 어떤 프로퍼티를 갖고 있는지를 따집니다.(이름 기반 타입에선 이름을 따집니다.) 일부 언어에서는 덕 타이핑(duck typing)이라고 합니다(겉표지만 보고 책을 판단하지 않는 것과 같은 원..

개발자 린다씨
'readonly' 태그의 글 목록