inflearn logo
강의

Course

Instructor

Advanced TypeScript skills learned through hands-on practice

Solving the empty object problem in typespace

extends와 = 의 차이는 무엇인가요?

Resolved

221

rhkdtjd124829

138 asked

1

export type Maybe<T extends string | boolean | number> = T;

type tests = [
  // @ts-expect-error
  Maybe<null>,
  // @ts-expect-error
  Maybe<undefined>,

  Maybe<string>,
  Maybe<false>,
  Maybe<0>,
  Maybe<"">
];
export type Maybe<T = string | boolean | number> = T;

type tests = [
  // @ts-expect-error
  Maybe<null>,
  // @ts-expect-error
  Maybe<undefined>,

  Maybe<string>,
  Maybe<false>,
  Maybe<0>,
  Maybe<"">
];

뭔가 extends와 = 가 같은것 같으면서도 다른가 봅니다. extends는 에러가 안나는데 =는 에러가 나네요

typescript

Answer 1

1

aftercamp

우선 =에 대해서 설명드리자면

Value space에서 default parameter 라고 생각하시면 되겠습니다.

예를 들면, foo 함수에 아무것도 넘기지 않고 호출하게 되면 hello가 리턴되는 것과 같이 Maybe에 아무것도 넘기지 않으면 string | number | boolean 타입이 T에 입력되게 됩니다.

function foo(a: string = "hello") {
  return a;
}

foo(); // 'hello'

 

반면에 extends는 value space에서 상속과 유사하다고 생각하시면 되는데요.

이걸 말로 풀어서 설명드리자면,

 

T에는 입력될 수 있는 타입은 string 집합에 포함되는 모든 것들, 예를 들면 "", "foo", "asdf", "fdfdf", 등등 무수히 많은 string literal types

또는

true, false

또는

number도 마찬가지로 숫자들의 집합 관점에서 생각했을 때 무수히 많은 숫자들이 있는데 그것들을 허용하겠다.

그래서 =와 extends의 차이가 존재합니다.

 

0

rhkdtjd124829

와우 친절한 설명 감사합니다. =와 extends에 대해서 이해가 부족 했는데, 덕분에 이해가 되었습니다!

이게 된다는걸 어떻게 판단할 수 있나요?

0

59

2

연습문제 강의 확인 부탁드립니다.

0

80

2

object key 질문드립니다.

0

66

1

행운 닉네임 등록부탁드립니다!

0

136

2

각 강의에 대한 설명 링크 404에러

0

68

2

행운문제 닉네임 등록 요청드립니다

0

63

2

블로그 링크 문제

1

122

1

제네릭과 사용자 정의 타입 가드에 관한 질문

1

168

1

제네릭 타입 제한을 하는것이 어떤 장점이 있을까요 ?

1

140

1

행운문제 닉네임 등록 신청합니다!

0

110

2

행운문제 테스트 유저 이름 입력 요청

0

128

2

행운문제 닉네임 입력 요청

1

157

2

행운문제 테스트 유저 이름 입력 요청

1

139

2

설명 블로그에 대한 질문

2

128

3

행운동전!

0

115

2

행운문제 테스트 유저 이름 입력 요청

0

122

1

행운 테스트 문제 400 에러

0

177

2

행운 테스트 문제 (존재하지 않는 유저입니다.)

1

203

2

행운테스트 동전이용!!

0

209

2

연습문제 링크 이슈

2

222

3

화살표 함수와 일반 함수의 매개변수 추론 관련

1

305

2

제네릭을 활용해서 정답을 맞춰보았습니다!

1

329

2

cache 강의 질문

1

209

1

Record의 제네릭은 자동적으로 바뀌나요?

0

377

2