inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Các kỹ năng TypeScript nâng cao được học thông qua thực hành thực hành

Giải quyết vấn đề đối tượng trống trong không gian kiểu chữ

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

Đã giải quyết

222

rhkdtjd124829

138 câu hỏi đã được viết

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

Câu trả lời 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

60

2

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

0

80

2

object key 질문드립니다.

0

66

1

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

0

136

2

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

0

69

2

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

0

64

2

블로그 링크 문제

1

122

1

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

1

168

1

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

1

140

1

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

0

111

2

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

0

129

2

행운문제 닉네임 입력 요청

1

158

2

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

1

140

2

설명 블로그에 대한 질문

2

129

3

행운동전!

0

115

2

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

0

122

1

행운 테스트 문제 400 에러

0

177

2

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

1

203

2

행운테스트 동전이용!!

0

209

2

연습문제 링크 이슈

2

223

3

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

1

308

2

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

1

332

2

cache 강의 질문

1

211

1

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

0

379

2