inflearn logo
강의

Course

Instructor

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

Type vs Interface

type 으로 함수의 형식을 정의하고 함수를 정의할 때

144

kakaoki880278

2 asked

0

안녕하세요

강의 잘 듣고 있습니다.

type TFunction = (x: number, y: number) => number;

const fun4: TFunction = function(x) {
    return x;
}

위와 같이 함수의 형식을 type 으로 명시하고 fun4 와 같이 함수를 표현했을 때, 매개변수가 2개 필요한데 1개 밖에 적지 않았으므로 오류가 발생할 것으로 기대했는데, 오류를 발생시키지 않더라구요.. 왜 그런것일까요??

 

코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다!

[코드팩토리 디스코드]
https://bit.ly/3HzRzUM

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

typescript

Answer 1

1

codefactory

안녕하세요!

파라미터가 더 적은 타입은 파라미터가 더 많은 타입에 assign 가능하기 때문입니다.

만약에 파라미터를 정의한 갯수보다 더 늘린다면 에러가 납니다.

x, y 파라미터 두개를 받겠다고 했더라도 실제 JS 로직에서 x 하나만 받고 사용한다면 정의상 문제가 되지 않기 때문입니다.

감사합니다!

0

kakaoki880278

답변 감사합니다!

추가로 질문을 드리자면,

함수의 파라미터 개수도 제한을 강제해서

함수에 필요한 파라미터의 개수도 정확히 입력해주게끔 하려면

어떻게 해야하나요?? 실제 업무에서 자주 사용하는 방법이 있을까요?

그게 아니라면 그냥 개수는 알아서 잘 쓰는 수 밖에 없나요?

1

codefactory

안녕하세요!

큰 의미가 없는 고민이라고 보셔도 괜찮습니다.

보통 작성하신 코드처럼 TS로 함수의 정의를 만들어두는 경우는 별로 없습니다.

함수 정의 자체가 시그니처 정의이기 때문이죠.

{

"compilerOptions": {

"strict": true,

"strictFunctionTypes": true

}

}

tsconfig.json에 위 세팅을 추가해주면 원하는 결과를 얻을 수 있지만 다시 말씀드리면 논리적으로 큰 의미가 없습니다. 지금 당장 떠오르는 절대로 문제가 생기는 상황을 잘 모르겠네요 (혹시 있다면 저한테도 알려주세요!)

만약에 함수 바디에 x, y를 모두 사용하고 있고 모두 필요하다면 당연히 선언을 해줘야 할것이고 만약에 함수 바디에 애초에 x만 사용하고 있다면 x,y 모두 선언하는게 아무런 의미가 없습니다.

감사합니다!

0

kakaoki880278

감사합니다~!!

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

declare 키워드가 가끔 나오던데 이건 뭔가요?

0

150

2

class가 값이 될 수 있다는 말을 이해하기 어렵습니다.

0

127

1

null값의 타입은 object 아닌가요?

0

188

1

타입? 인터페이스? 질문있습니다

0

147

1

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

0

171

2

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