인프런 커뮤니티 질문&답변

리얼큐님의 프로필 이미지
리얼큐

작성한 질문수

[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스

Type vs Interface

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

작성

·

44

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 문의하기를 이용해주세요.

답변 1

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

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

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

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

감사합니다!

리얼큐님의 프로필 이미지
리얼큐
질문자

답변 감사합니다!

추가로 질문을 드리자면,

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

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

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

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

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

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

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

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

{

"compilerOptions": {

"strict": true,

"strictFunctionTypes": true

}

}

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

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

감사합니다!

리얼큐님의 프로필 이미지
리얼큐
질문자

감사합니다~!!

리얼큐님의 프로필 이미지
리얼큐

작성한 질문수

질문하기