본문 바로가기

공식문서 번역36

TypeScript : Type Inference & Variable Declaration 타입 추론(Type Inference)이란?타입 추론이란 프로그래머가 변수의 타입을 명시적으로 지정하지 않아도 컴파일러가 변수에 할당된 값을 보고 스스로 타입을 추론하는 기능입니다. 즉, 코드를 작성할 때 변수 앞에 let, const 등의 키워드와 함께 타입을 명시하지 않아도 컴파일러가 변수에 처음 할당된 값을 보고 어떤 타입인지 판단하여 자동으로 타입을 지정해주는 것을 말합니다.왜 타입 추론이 필요할까요?코드 간결화: 타입을 명시적으로 지정하지 않아도 되므로 코드를 더 간결하게 작성할 수 있습니다.개발 생산성 향상: 반복적인 타입 선언을 줄여 개발 속도를 향상시킬 수 있습니다.오류 감소: 컴파일러가 타입을 자동으로 추론하기 때문에 타입 오류를 줄일 수 있습니다.TypeScript에서의 타입 추론 예시.. 2024. 10. 3.
TypeScript : Type Compatibility TypeScript의 타입 호환성: 깊이 있는 이해와 예시타입 호환성이란 TypeScript에서 두 가지 타입이 서로 교환될 수 있는 정도를 의미합니다. 즉, 어떤 타입의 값을 다른 타입의 변수에 할당하거나 함수의 인자로 전달할 수 있는지를 판단하는 기준입니다. TypeScript의 타입 호환성은 **구조적 서브타이핑(structural subtyping)**을 기반으로 합니다. 이는 타입의 이름이 아닌, 타입이 가지고 있는 멤버(property, method)를 기준으로 호환성을 판단한다는 의미입니다.왜 타입 호환성이 중요할까요?유연성: 엄격한 타입 검사에도 불구하고 코드를 더욱 유연하게 작성할 수 있습니다.생산성: 불필요한 타입 캐스트를 줄이고, 코드 오류를 조기에 발견할 수 있습니다.재사용성: 인터.. 2024. 10. 2.
TypeScript : Namespaces and Modules TypeScript의 네임스페이스와 모듈: 심층 분석TypeScript에서 코드를 조직하고 관리하는 데 있어 네임스페이스(Namespace)와 모듈(Module)은 필수적인 개념입니다. 두 개념은 비슷해 보이지만, 각각의 특징과 사용 용도가 다릅니다.네임스페이스 (Namespace)정의:코드를 논리적인 그룹으로 나누어 이름 충돌을 방지하고 코드 가독성을 높이는 데 사용됩니다.전역 네임스페이스를 분할하여 코드를 조직합니다.특징:정적: 컴파일 시점에 결정되며, 런타임에는 존재하지 않습니다.중첩 가능: 다른 네임스페이스 안에 네임스페이스를 정의할 수 있습니다.외부 모듈 시스템과 독립적: CommonJS, ES Modules 등 외부 모듈 시스템과는 별개로 사용됩니다.사용법:namespace MyNamespac.. 2024. 9. 30.
TypeScript : Triple-Slash Directives 트리플 슬래시 지시어란?TypeScript에서 트리플 슬래시 지시어는 ///로 시작하는 특별한 주석으로, 컴파일러에게 추가적인 정보를 제공하는 역할을 합니다. 주로 타입 선언 파일(.d.ts)에서 사용되며, 컴파일 과정에 영향을 미치는 다양한 기능을 수행합니다.주요 용도외부 모듈 참조: 다른 파일이나 모듈에 정의된 타입을 현재 파일에서 사용할 수 있도록 연결합니다.글로벌 변수 선언: 전역적으로 사용되는 변수나 함수의 타입을 선언합니다.컴파일 옵션 설정: 컴파일 과정에서 사용할 옵션을 지정합니다.예시1. 외부 모듈 참조// myModule.tsexport interface MyInterface { name: string;}// otherModule.ts/// let myVar: MyInterface = .. 2024. 9. 30.
TypeScript : Class와 Interface 소개타입스크립트는 자바스크립트에 강력한 타입 시스템을 추가하여 더욱 안전하고 유지보수 가능한 코드를 작성할 수 있도록 지원합니다. 이 중 Class와 Interface는 객체지향 프로그래밍에서 핵심적인 역할을 수행하는 두 가지 개념입니다. 이 글에서는 Class와 Interface의 개념, 차이점, 그리고 사용 예시를 통해 자세히 알아보겠습니다.Class (클래스)정의: 객체를 생성하기 위한 템플릿입니다. 클래스는 속성(property)과 메서드(method)를 정의하며, 이를 기반으로 객체를 생성할 수 있습니다.특징:상속: 다른 클래스를 상속하여 기능을 확장할 수 있습니다.생성자: 객체 생성 시 초기화 작업을 수행하는 특별한 메서드입니다.접근 제한자: public, private, protected 키.. 2024. 9. 28.
TypeScript Call Signatures / Dictionary 호출 시그니처(call signatures) 코드 작성last(arr): 이 함수는 배열의 마지막 요소를 반환해야 합니다.function last(arr: T[]): T | undefined { return arr.length > 0 ? arr[arr.length - 1] : undefined;}호출 시그니처: (arr: T[]): T | undefined설명:제네릭 타입 T를 사용하여 다양한 타입의 배열을 처리할 수 있도록 했습니다.배열이 비어있을 경우 undefined를 반환하도록 처리했습니다.prepend(arr, item): 이 함수는 배열의 시작 부분에 item을 넣고 배열을 return해야 합니다.function prepend(arr: T[], item: T): T[] { return [i.. 2024. 9. 27.
TypeScript / 타입스크립트 개념 및 활용 JavaScript는 유형 안전 언어일까요?아닙니다. JavaScript는 유형 안전(type-safe) 언어가 아닙니다.왜 JavaScript는 유형 안전 언어가 아니라고 할까요?동적 타이핑(Dynamic Typing): JavaScript는 변수를 선언할 때 명시적으로 데이터 타입을 지정하지 않아도 됩니다. 즉, 같은 변수에 문자열, 숫자, 객체 등 다양한 타입의 값을 할당할 수 있습니다. 이러한 유연성은 개발 속도를 높여주지만, 런타임 시 예상치 못한 타입 오류가 발생할 가능성을 높입니다.약한 타이핑(Weak Typing): JavaScript는 타입 간의 변환을 자동으로 수행하는 경우가 많습니다. 예를 들어, 숫자와 문자열을 더하면 자동으로 문자열로 변환되어 연결됩니다. 이러한 특징은 편리할 수 .. 2024. 9. 26.
[공식문서-Handbook] Everyday Types(언어의 원시 타입들) 이번 장에서는 JavaScript 코드에서 찾아볼 수 있는 가장 흔한 타입들을 다루고, 이 타입들을 TypeScript에서 어떻게 기술하는지 각각의 대응하는 방식에 대하여 설명하겠습니다. 이 문서에서 빠짐없이 전부 다루고자 하는 것이 아니며, 타입을 만들고 사용하는 더 많은 방법들은 이후 이어지는 장에서 다룰 것입니다. 타입은 단지 타입 표기 이외에도 훨씬 다양한 위치에 나타날 수 있습니다. 타입 자체에 대하여 배우는 것과 더불어, 새로운 구조체를 만들고자 할 때 타입을 참조하는 경우들에 대하여 알아볼 것입니다. 우선 JavaScript 또는 TypeScript 코드를 작성할 때 가장 기본적이면서 흔히 만날 수 있는 타입들을 다시 살펴보는 데에서 시작해 보겠습니다. 이 타입들은 이후에 다루는 보다 복잡한.. 2023. 10. 4.
[공식문서-Handbook] The Basics(기초) JavaScript의 모든 값은 저마다 다양한 동작들을 내장하고 있으며 이는 다양한 연산(Operation)을 실행하여 확인할 수 있습니다. 이는 다소 추상적으로 들릴 수 있는데, 간단한 예시로 message라는 이름의 변수에 대하여 실행할 수 있는 몇몇 연산들을 살펴보겠습니다. // 'message'의 프로퍼티 'toLowerCase'에 접근한 뒤 // 이를 호출합니다 message.toLowerCase(); // 'message'를 호출합니다 message(); 위 코드를 분석해보면, 우선 첫 번째 실행 코드 줄에서는 toLowerCase라는 프로퍼티에 접근한 뒤 이를 호출합니다. 두 번째 줄에서는 message를 직접 호출하려 하고 있습니다. 하지만 message의 값이 무엇인지 모른다면 - 일반적.. 2023. 9. 27.