내일배움캠프 TIL (230120)

Jiumn·2023년 1월 20일
0
post-thumbnail

타입스크립트 퀴즈 정리

스파르타에서 타입스크립트 입문 1주차 마무리로 간단한 퀴즈를 줬다.
주로 타입 에러가 발생하는 부분이 어디인지 찾는 문제들이었다. 헷갈렸던 문제들을 정리해본다.


객체 타입 선언

문제: 다음 코드에서 타입 에러가 발생하는 부분을 모두 고르세요

let v1: object;
v1 = { name: "abc"}
console.log(v1.name)

정답: console.log(v1.name)name에서 에러가 발생한다.

발생한 에러는 Property 'name' does not exist on type 'object'.
타입을 지정할 때 object의 경우 리터럴, interface, type으로 지정해줘야 속성 타입을 읽을 수 있다.

1) interface로 지정

2) type으로 지정

3) 리터럴로 지정


유니온 타입과 교차 타입

문제: 다음 코드에서 타입 에러가 발생하는 부분을 모두 고르세요

let v2: (2 | 4 | 6) & (3 | 4 | 5)
v2 = 3;
v2 = 4;

정답: v2 = 3; 에서 에러가 발생한다.

발생한 에러는 Type '3' is not assignable to type '4'.

& 연산자로 이어진 교차 타입이기 때문에 양쪽 항을 모두 만족하는 값(4)만 포함된다.


인터페이스와 교차 타입

문제: 다음 코드에서 타입 에러가 발생하는 부분을 모두 고르세요

interface Person {
    name: string;
    age: number
}

interface Product {
    name: string;
    price: number
}

type PP = Person & Product

const p1: PP = {
    name: "a"
}

const p2: PP = {
    age: 23,
    price: 1000
}

const p1: PP = {
    name: "a",
    age: 23,
    price: 1000
}

답: const p1, const p2에 에러가 발생한다.

type PPPersonProduct 인터페이스를 교차(&)해서 만들어졌기 때문에, 두 인터페이스의 속성을 모두 만족해야 한다.

그래서 모든 속성을 가진 const p3를 제외하고 에러가 발생한다.

profile
Back-End Wep Developer. 꾸준함이 능력이다.

0개의 댓글