inflearn logo
강의

Course

Instructor

[Code Factory] [Beginner] Complete Typescript Course from Code Factory in Just 8 Hours

Extract Type

type functionOnly = Extract<string| (()=> void), Function> 의 의미

171

egpark

11 asked

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>

로 표현하는 이유가 뭘까?

이고, 스스로 답을 찾지 못해 문의를 드리게 됐습니다.

typescript

Answer 2

0

codefactory

안녕하세요!

질문을 정확히 이해했는지 잘 모르겠지만 제 생각대로 답변 해보겠습니다.

혹시 잘못 이해했다면 다시 답변 주세요!

 

Function 타입은 모든 함수 타입을 포괄합니다. 예를 들어 () => void, (x: number) => number, (a: string, b: number) => string 등 모든 함수 타입은 Function 타입의 부분 집합입니다. 따라서 Function을 사용하면 더 많은 함수 타입을 포함할 수 있습니다.

 

두번째로 Function을 사용하면 함수의 정확한 타입을 명시할 필요 없이 단지 함수임을 나타낼 수 있습니다. 이는 타입이 복잡해질 때 유용합니다. 예를 들어 정확한 함수 시그니처를 일일이 지정하지 않아도 되므로 더 유연하게 타입을 다룰 수 있습니다.

 

감사합니다!

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.
egpark님의 질문에 대해 답변드리겠습니다.

type functionOnly = Extract<string| (()=> void), Function>에서 Extract<T, U>는 유틸리티 타입 중 하나로, T 에서 U에 할당 가능한 타입들만 추출하는 역할을 합니다. 즉, 여기서는 string | (() => void) 타입 중 Function 타입에 할당 가능한 타입들을 추출하는데 사용됩니다.

Function 타입은 모든 함수 타입의 상위 타입으로, JavaScript에서 모든 함수가 이 타입의 인스턴스라고 볼 수 있습니다. 반면, (() => void)는 더 구체적인 함수 타입으로 매개변수를 받지 않고 반환값도 없는 함수를 나타냅니다.

  1. type functionOnly = Extract<string| Function, Function>로 표현할 경우, Function은 모든 함수 타입을 포괄하기 때문에 string 타입은 제외되고, Function 자체가 결과 타입이 됩니다. 이는 광범위한 모든 함수 타입을 포함하게 됩니다.

  2. 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