23.01.19 TypeScript 퀴즈

Gon·2023년 1월 19일
0

공부정리

목록 보기
13/14
post-thumbnail

문제

  1. 정적 타입 언어에 대한 설명으로 적절한 것을 고르세요

    a. 정적 타입 언어는 런타임에 타입이 결정된다
    b. 정적 타입 언어가 동적 타입 언어보다 항상 생산성이 높다
    c. 타입 오류가 컴파일 시 발견된다
    d. 정적 타입 언어는 타입에 대한 고민을 별로 하지 않아도 되므로 진입 장벽이 낮다

  2. 다음 코드에 대한 설명으로 옳은 것을 모두 고르세요

    a. 콘솔 로그로 2가 출력된다
    b. 콘솔 로그로 undefined가 출력된다
    c. 2번 줄에서 런타임 에러가 발생한다
    d. 타입스크립트를 사용했다면 컴파일 과정에서 (2번 줄에서) 버그를 잡아낼 수 있다

  3. tsconfig.json에서 target 속성에 'es5'를 입력했다.
    다음 코드의 컴파일 결과물에 대한 설명으로 틀린 것을 고르세요

    a. 1번 줄에서는 const가 var로 변경되고 나머지는 같은 코드가 출력된다
    b. 2번 줄에서 사용된 화살표 함수는 일반 함수로 변경된다
    c. 만약 target 속성에 'es6'를 입력했다면 화살표 함수는 일반 함수로 변경되지 않는다

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

    a. console.log(v1.name);
    b. v2 = 3;
    c. v2 = 4;
    d. v3 = undefined;

  5. any 타입에 대한 설명으로 틀린 것을 고르세요

    a. 타입 에러가 나면 any 타입으로 손쉽게 해결할 수 있으므로 많이 사용해도 문제가 되지 않는다
    b. 자바스크립트 프로젝트를 타입스크립트로 포팅(옮긴다)하는 경우에
    임시로 any를 사용하면서 점진적으로 작업할 때 유용하다
    c. any 타입은 모든 값을 포함하는 타입이다
    d. any 타입을 사용하면 TS 타입 시스템의 장점을 누릴 수 없게 된다

  6. 다음 코드에서 각 변수의 값을 잘못 나타낸 것은?

    a. v1:6
    b. v2:6
    c. v3: 'banana'
    d. v4: 'ko'
    e. v5: 'Korean'

  7. 다음은 named parameters 방식으로 작성한 코드이다.
    다음 중 타입 에러가 발생하는 줄을 모두 고르세요

    a. printText('abc', 20, 'kor');
    b. printText({ name: 'abc' });
    c. printText({ age: 20, name: 'abc' });
    d. printText({ name: 'abc', language: 'kor' });
    e. printText({ age: 20 })

  8. 다음 중 타입 에러가 발생하는 줄을 모두 고르세요

a. age: '25'
b. name: 'abc'
c. birth: 123
d. friends: []

  1. 다음 중 타입 에러가 발생하는 줄을 모두 고르세요

    a. const p1
    b. const p2
    c. const p3

  2. 다음 코드에 대한 설명 중 틀린 것을 고르세요

    a. 제네릭 T의 타입은 사용하는 곳에서 동적으로 결정된다
    b. console.log(defaultValue.length); 에서는 제네릭 T의 타입을 모르기 때문에 타입 에러가 발생한다
    c. arr1의 타입은 string[] 이다
    d. const arr2 = makeArray('b', 10); 에서는 제네릭 타입을 입력하지 않아서 타입 에러가 발생한다

  3. 다음 설명 중 틀린 것을 고르세요

    a. 타입 추론에 의해 매개변수 a 는 string 타입이 되므로 f1(3, 6); 에서 타입 에러가 발생한다
    b. f1의 반환 타입은 number이므로 const v1: string = f1('a', 1); 에서 타입 에러가 발생한다
    c. const v2: number = f2(5); 와 const v3: string = f2(35); 에서는 타입 에러가 발생하지 않는다
    d. v4의 타입은 'number | "too big"' 이다


정답

  1. 정답 : C

    a. 정적 타입 언어는 컴파일타임에 타입이 결정된다
    b. 정적 타입 언어가 동적 타입 언어보다 항상 생산성이 높다고는 할 수 없다.
    c. 타입 오류가 컴파일 시 발견된다 (correct!)
    d. 정적 타입 언어는 타입에 대한 고민을 해야 한다

  2. 정답 : C, D

    c. 2번 줄에서 런타임 에러가 발생한다
    d. 타입스크립트를 사용했다면 컴파일 과정에서 (2번 줄에서) 버그를 잡아낼 수 있다

    friendListjinsoo object에 존재하지 않는다. 따라서 에러가 발생한다.

  3. 정답 : A

    a. 1번 줄에서는 const가 var로 변경되고 나머지는 같은 코드가 출력된다

  4. 정답 : A, B

    a. v1에 name의 타입이 없다
    b. v2 = 4

  5. 정답 : A

    a. 되도록이면 any타입은 쓰지않는 것이 좋다.

  6. 정답 : E

    e. v5: ‘Korean’
    ‘ko’는 value 이다.

  7. 정답 : A, E

    a. printText('abc', 20, 'kor'); ← name parameter로 넣어야한다.
    e. printText({ age: 20 }); ← name은 필수로 들어가야하는 parameter이다.

  8. 정답 : E

    e. age: '25', ← age의 type은 number이다.

    friends: [], ← 해당 interface의 index type의 value에는 string | number; 이 올 수 있다.

  9. 정답 : A, B

    a, b. const p1, const p2 ← 두 상수 모두 interface Person , Product 에 존재하는 타입들을 가져야한다.

  10. 정답 : D

    d. 'b' 를 넣음으로써 makeArray 함수에게 T에 string type을 사용할 것이다라고 알려 줄 수 있다.

  11. 정답 : C

    c. f2의 반환 타입은 'number | "too big"' 이기 때문에 상수 v2의 타입은 number가 아닌
    'number | "too big"'이 되어야한다.
    같은 이유로 상수 v2의 타입은 string이 아닌 'number | "too big"' 이 되어야한다.

0개의 댓글