type functionOnly = Extract<string| (()=> void), Function> 의 의미
171
11 asked
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
코드팩토리 디스코드
https://links.codefactory.ai
Flutter 강의를 구매하시면 코드팩토리 디스코드 서버 플러터 프리미엄 채널에 들어오실 수 있습니다! 디스코드 서버에 들어오시고 저에게 메세지로 강의를 구매하신 이메일을 보내주시면 프리미엄 채널에 등록해드려요! 프리미엄 채널에 들어오시면 모든 질의응답 최우선으로 답변해드립니다!
안녕하세요, 강의 내용이 참 좋습니다. 많이 배우고 있습니다.
강의 내용 중
type functionOnly = Extract<string| (()=> void), Function>
내용이 있습니다.
결과적으로 functionOnly는 ()=>void 타입입니다.
제 의문은..
type functionOnly = Extract<string| Function, Function>
혹은
type functionOnly = Extract<string| (()=> void), (()=> void)>
가 아닌
type functionOnly = Extract<string| (()=> void), Function>
로 표현하는 이유가 뭘까?
이고, 스스로 답을 찾지 못해 문의를 드리게 됐습니다.
Answer 2
0
안녕하세요!
질문을 정확히 이해했는지 잘 모르겠지만 제 생각대로 답변 해보겠습니다.
혹시 잘못 이해했다면 다시 답변 주세요!
Function 타입은 모든 함수 타입을 포괄합니다. 예를 들어 () => void, (x: number) => number, (a: string, b: number) => string 등 모든 함수 타입은 Function 타입의 부분 집합입니다. 따라서 Function을 사용하면 더 많은 함수 타입을 포함할 수 있습니다.
두번째로 Function을 사용하면 함수의 정확한 타입을 명시할 필요 없이 단지 함수임을 나타낼 수 있습니다. 이는 타입이 복잡해질 때 유용합니다. 예를 들어 정확한 함수 시그니처를 일일이 지정하지 않아도 되므로 더 유연하게 타입을 다룰 수 있습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다.
egpark님의 질문에 대해 답변드리겠습니다.
type functionOnly = Extract<string| (()=> void), Function>에서 Extract<T, U>는 유틸리티 타입 중 하나로, T 에서 U에 할당 가능한 타입들만 추출하는 역할을 합니다. 즉, 여기서는 string | (() => void) 타입 중 Function 타입에 할당 가능한 타입들을 추출하는데 사용됩니다.
Function 타입은 모든 함수 타입의 상위 타입으로, JavaScript에서 모든 함수가 이 타입의 인스턴스라고 볼 수 있습니다. 반면, (() => void)는 더 구체적인 함수 타입으로 매개변수를 받지 않고 반환값도 없는 함수를 나타냅니다.
type functionOnly = Extract<string| Function, Function>로 표현할 경우,Function은 모든 함수 타입을 포괄하기 때문에string타입은 제외되고,Function자체가 결과 타입이 됩니다. 이는 광범위한 모든 함수 타입을 포함하게 됩니다.type functionOnly = Extract<string| (()=> void), (()=> void)>로 표현할 경우, 이는 매개변수 없이 반환값도 없는 특정 형태의 함수만을 추출함을 의미합니다. 이 방식은 너무 구체적이며 일반적인 함수 타입 추출에는 적합하지 않을 수 있습니다.
type functionOnly = Extract<string| (()=> void), Function> 방식을 사용하는 이유는, 모든 종류의 함수 타입들 중에서 Function에 할당 가능한 타입, 즉 모든 함수 타입을 추출하되, 가장 기본형인 (() => void) 형태로 한정지어 명시하기 위함입니다. 이렇게 표현하면 string은 제외되고, (() => void)는 Function 타입에 포함됨으로 인하여 결과적으로 functionOnly 타입은 (() => void)가 됩니다.
이 방식은 타입의 범위를 명확하게 한정짓고자 할 때 유용하며, 특히 TypeScript에서 함수 타입을 다룰 때 다양한 함수 형태 중 원하는 형태의 함수만을 제한하여 사용하고자 할 때 사용됩니다.
ts강의 42. override 마지막즘 질문
0
42
1
25. js array의 문제점 4:55쯤 질문입니다
0
31
1
union 기본기 7분 53초 질문 드립니다.
0
117
2
Equality Narrowing 관련 질문
0
117
2
tsconfig.json 설명
0
124
2
환불 관련 질문 드립니다.
0
179
1
재너릭이랑 any 차이가 뭔가요?
0
221
2
리플렉션과 데코레이터 사용시 의문점
0
135
2
변수의 선언이 중복되었다고 할 때
0
162
2
type 으로 함수의 형식을 정의하고 함수를 정의할 때
0
144
1
declare 키워드가 가끔 나오던데 이건 뭔가요?
0
150
2
class가 값이 될 수 있다는 말을 이해하기 어렵습니다.
0
127
1
null값의 타입은 object 아닌가요?
0
188
1
타입? 인터페이스? 질문있습니다
0
147
1
npm install cache error
0
205
1
12_experimental_decorator, class decorator
0
131
1
9_class/7_override.ts, super 키워드 질문
0
211
2
강의 계획이 궁금합니다!
0
289
1
instantiator 질문
0
151
1
따라하는데 에러 생기네요
1
390
2
webstorm에서 ts-node 설치해도 문제가 발생하고 있습니다.
0
485
3
infer를 사용한 type의 쓰임새
0
131
1
혹시 수업하면서 작성된 코드는 따로 받아 볼 수 없나요?
0
203
1
object intersection에서 유니언으로 타입 질문
1
129
1

