type Print = {
(arr: number[]): void;
};
const printer: Print = (arr) => arr[0];
const a = print([1, 2]); // 1
Print를 통해 printer의 인수를 숫자배열, 반환값을 void로 강제하였다.
하지만 printer는 반환값이 존재하는 함수이기에 선언에서 typescript가 막아주리라 생각했지만 선언이 되었다.
심지어 vscode로 확인해보면 a를 void로 인식하고 있다. return값이 void여도 되는건가?
TypeScript Playground를 찾아가서 typeof를 통해 a의 타입을 찍어보면 number가 나온다.
반환값에 concrete type이 오면 에러가 발생하지만 void, generic이 오면 에러를 발생시켜주지 않는다.
한참을 고민하다 의문을 해결하지 못하여 이렇게 적어두고 덮어둬야겠다.