작성
·
90
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 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>
로 표현하는 이유가 뭘까?
이고, 스스로 답을 찾지 못해 문의를 드리게 됐습니다.
답변 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에서 함수 타입을 다룰 때 다양한 함수 형태 중 원하는 형태의 함수만을 제한하여 사용하고자 할 때 사용됩니다.