extends와 = 의 차이는 무엇인가요?
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는 에러가 안나는데 =는 에러가 나네요
Answer 1
1
우선 =에 대해서 설명드리자면
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
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

