추가적으로 업데이트 예정
TypeScript는 정적 타입 검사를 통해 코드 작성 시 타입 오류를 미리 발견할 수 있기 때문에 사용한다.
이를 통해, 런타임 오류를 줄일 수 있다. 또한 타입스크립트를 사용하면 객체 지향 프로그래밍을 하기 쉽다.
제너릭, 인터페이스, 접근 제어자 등을 통해 기존 객체 지향 언어를 사용하던 개발자의 진입 장벽을 낮춰준다.
대규모 프로젝트에서는 코드의 일관성과 안정성을 확보할 수 있으며, 자바스크립트의 최신 기능을 사용할 수 있게 도와준다.
TypeScript는 JavaScript의 자료형을 확장하여 더 명확한 타입을 제공한다. 주요 기본 자료형으로는 number, string, boolean, null, undefined, symbol, bigint가 있다.
추가로 any, unknown, never, void 같은 타입도 존재하며, 특정 상황에서 유용하게 사용할 수 있다.
TypeScript에서는 var, let, const를 사용하여 변수를 선언할 수 있다. 선언 시, 타입을 명시할 수 있으며, 타입 추론을 통해 타입 생략도 가능하다. 주요 선언 방법은 다음과 같다.
1️⃣ 타입과 값 동시에 선언
let age: number = 25; const name: string = "guswjd";
2️⃣ 타입만 선언(초기값 없음)
let isAvailable: boolean; isAvailable = true;
3️⃣ 값만 선언(타입 생략)
let message = "Hello, TypeScript!";
타입을 명시하지 않으면 타입스크립트가 값에 따라 타입을 자동으로 추론하다.
4️⃣ 타입과 값 모두 생략(타입 any 추론)
let data; data = 42; data = "typescript";
타입과 값을 모두 생략하면 data는 any 타입으로 간주되어 모든 타입을 허용한다.
Type과 Interface는 모두 객체의 타입을 정의할 때 사용되지만, 차이점이 있다.
Interface는 확장이 가능하여 다른 인터페이스를 상속할 수 있고, 중복 선언이 가능하다.
반면, Type은 유니온 타입과 교차 타입을 정의할 수 있으며, 더 유연하게 사용 가능하다. 하지만 Type은 상속이 불가능하다.
enum은 TypeScript에서 특정 값들의 집합을 나타내며, 각 요소는 숫자 또는 문자열로 자동 매핑된다.
반면 object는 JavaScript의 객체 리터럴로 값을 키-값 쌍으로 정의한다.
enum은 코드 가독성을 높이고, 상수 값을 관리할 때 유용하지만, object는 더 유연하게 사용할 수 있다.
제너릭(Generics)은 함수, 클래스, 인터페이스에서 타입을 파라미터화하여, 다양한 타입에 대해 유연한 코드를 작성할 수 있게 해준다.
<> 안에 대표적으로 T를 써서 사용한다.
제너릭은 함수 뿐만 아니라 인터페이스에도 사용할 수 있으며, extends와 함께 사용하면 특정 타입에 대해서만 작동하도록 제약조건을 만들 수도 있다.
제너릭을 사용하면 코드의 재사용성이 높아지고, 타입 안전성을 확보할 수 있다.
function identity<T>(value: T): T { return value; }
TypeScript는 제너릭을 활용한 여러 유틸리티 타입을 제공한다.
유틸리티 타입은 이미 정의한 타입을 변환할 때 사용할 수 있는 타입 문법이다.
예를 들어, Partial<T>는 모든 프로퍼티를 선택적으로 만들고, Readonly<T>는 모든 프로퍼티를 읽기 전용으로 만든다.
Pick<T, K>는 특정 프로퍼티만 선택하여 타입을 정의하고, Omit<T, K>는 특정 프로퍼티를 제외한 타입을 정의할 때 사용된다.
TypeScript의 클래스에서는 접근 제어자를 사용하여 프로퍼티와 메서드의 접근 범위를 설정할 수 있다.
static 키워드는 클래스의 인스턴스가 아닌, 클래스 자체에서 직접 접근 가능한 정적 프로퍼티나 메서드를 정의할 때 사용된다.
class MathUtil { static PI: number = 3.14; static getCircleArea(radius: number): number { return this.PI * radius * radius; } } console.log(MathUtil.getCircleArea(5)); // 78.5
static으로 선언된 멤버는 인스턴스를 생성하지 않고도 클래스 이름을 통해 접근할 수 있다.
프론트엔드 기술 면접 질문 리스트 - TypeScript
🎯 Q1. TypeScript를 사용하는 이유에 대해 설명하세요.
TypeScript는 정적 타입 검사를 통해 코드 작성 시 타입 오류를 미리 발견할 수 있기 때문에 사용한다.
이를 통해, 런타임 오류를 줄일 수 있다. 또한 타입스크립트를 사용하면 객체 지향 프로그래밍을 하기 쉽다.
제너릭, 인터페이스, 접근 제어자 등을 통해 기존 객체 지향 언어를 사용하던 개발자의 진입 장벽을 낮춰준다.
대규모 프로젝트에서는 코드의 일관성과 안정성을 확보할 수 있으며, 자바스크립트의 최신 기능을 사용할 수 있게 도와준다.
🎯 Q2. TypeScript의 기본 자료형에 대해 설명하세요.
TypeScript는 JavaScript의 자료형을 확장하여 더 명확한 타입을 제공한다. 주요 기본 자료형으로는 number, string, boolean, null, undefined, symbol, bigint가 있다.
추가로 any, unknown, never, void 같은 타입도 존재하며, 특정 상황에서 유용하게 사용할 수 있다.
🎯 Q3. TypeScript에서 변수를 선언하는 방법은 무엇인가요.
TypeScript에서는 var, let, const를 사용하여 변수를 선언할 수 있다. 선언 시, 타입을 명시할 수 있으며, 타입 추론을 통해 타입 생략도 가능하다. 주요 선언 방법은 다음과 같다.
1️⃣ 타입과 값 동시에 선언
2️⃣ 타입만 선언(초기값 없음)
3️⃣ 값만 선언(타입 생략)
타입을 명시하지 않으면 타입스크립트가 값에 따라 타입을 자동으로 추론하다.
4️⃣ 타입과 값 모두 생략(타입 any 추론)
타입과 값을 모두 생략하면 data는 any 타입으로 간주되어 모든 타입을 허용한다.
🎯 Q4. Type과 Interface의 차이점에 대해 설명하세요.
Type과 Interface는 모두 객체의 타입을 정의할 때 사용되지만, 차이점이 있다.
Interface는 확장이 가능하여 다른 인터페이스를 상속할 수 있고, 중복 선언이 가능하다.
반면, Type은 유니온 타입과 교차 타입을 정의할 수 있으며, 더 유연하게 사용 가능하다. 하지만 Type은 상속이 불가능하다.
🎯 Q5. enum과 object의 차이점에 대해 설명하세요.
enum은 TypeScript에서 특정 값들의 집합을 나타내며, 각 요소는 숫자 또는 문자열로 자동 매핑된다.
반면 object는 JavaScript의 객체 리터럴로 값을 키-값 쌍으로 정의한다.
enum은 코드 가독성을 높이고, 상수 값을 관리할 때 유용하지만, object는 더 유연하게 사용할 수 있다.
🎯 Q6. 제너릭에 대해 설명하세요.
제너릭(Generics)은 함수, 클래스, 인터페이스에서 타입을 파라미터화하여, 다양한 타입에 대해 유연한 코드를 작성할 수 있게 해준다.
<> 안에 대표적으로 T를 써서 사용한다.
제너릭은 함수 뿐만 아니라 인터페이스에도 사용할 수 있으며, extends와 함께 사용하면 특정 타입에 대해서만 작동하도록 제약조건을 만들 수도 있다.
제너릭을 사용하면 코드의 재사용성이 높아지고, 타입 안전성을 확보할 수 있다.
🎯 Q7. 제너릭 유틸리티 타입에 대해 설명하세요.
TypeScript는 제너릭을 활용한 여러 유틸리티 타입을 제공한다.
유틸리티 타입은 이미 정의한 타입을 변환할 때 사용할 수 있는 타입 문법이다.
예를 들어, Partial<T>는 모든 프로퍼티를 선택적으로 만들고, Readonly<T>는 모든 프로퍼티를 읽기 전용으로 만든다.
Pick<T, K>는 특정 프로퍼티만 선택하여 타입을 정의하고, Omit<T, K>는 특정 프로퍼티를 제외한 타입을 정의할 때 사용된다.
🎯 Q8. 클래스의 Public, Private, Protected에 대해 설명하세요.
TypeScript의 클래스에서는 접근 제어자를 사용하여 프로퍼티와 메서드의 접근 범위를 설정할 수 있다.
🎯 Q9. 클래스의 Static에 대해 설명하세요.
static 키워드는 클래스의 인스턴스가 아닌, 클래스 자체에서 직접 접근 가능한 정적 프로퍼티나 메서드를 정의할 때 사용된다.
static으로 선언된 멤버는 인스턴스를 생성하지 않고도 클래스 이름을 통해 접근할 수 있다.
'Front-End > 기술 면접' 카테고리의 다른 글