Reference: 지금까지 받았던 신입 프론트엔드 면접 질문들 by arthur
타입스크립트를 사용하는 가장 큰 이유는 정적 타이핑을 지원한다는 점입니다.
이를 통하여, 런타임 시 타입 에러를 발견하는 것을 막고, 컴파일 단에서 디버깅할 수 있게 됩니다.
또한 타입스크립트를 사용하면 객체지향 프로그래밍을 하기 쉽습니다.
제네릭, 인터페이스, 접근 제어자들을 통해, 기존 객체지향 언어를 사용하던 개발자의 진입 장벽을 낮춰줍니다.
선언적 확장
interface
는 같은 이름으로 중복 선언을 함으로써 확장이 가능하지만, type
의 경우 에러가 발생합니다.
extends
, &
, |
interface
는 extends
키워드를 통해 확장할 수 있습니다. 비슷한 기능을 type
에서 구현하려면 intersection 타입인 &
를 통해 사용할 수 있습니다.
반면, union 타입은 interface
에서 비슷하게 구현할 수 없습니다.
제네릭은 타입을 파라미터처럼 사용하는 것을 의미합니다.
<>
안에 대표적으로 T를 써서 사용합니다.
제네릭은 함수 뿐만아니라 인터페이스에도 사용할 수 있으며, extends
와 함께 사용하면, 특정 타입에 대해서만 작동하도록 제약조건을 만들 수도 있습니다.
유틸리티 타입이란, 이미 정의한 타입을 변환할 때 사용할 수 있는 타입 문법으로, 대표적으로 Partial<T>
, Readonly<T>
, Record<K, T>
, Pick<T>
, Omit<T>
가 있습니다.
public
은 어디에서나 접근할 수 있는 값으로, 생략 가능한 default 값입니다.
private
은 해당 클래스의 인스턴스에서만 사용할 수 있는 값입니다.
protected
는 해당 클래스 혹은 서브 클래스의 인스턴스에서만 접근이 가능한 값입니다.
static
키워드를 사용하면 정적 변수, 또는 정적 함수를 만들 수 있습니다.
이들은, 인스턴스가 아닌 클래스에 속하는 변수와 함수로, 이들을 호출하기 위해 인스턴스가 필요하지 않습니다. 인스턴스에서 호출할 경우, 에러가 발생합니다.
또한 클래스 자체에 속하기 때문에, 다른 인스턴스들에게 모두 영향을 줄 수 있습니다.