TypeScript - number을 이용하여 boolean을 나타낼 수 있는가? (Type '() => number' is not assignable to type '() => boolean'.)

김동현·2021년 1월 9일
0

FE- Typescript

목록 보기
3/4

문제사항

JavaScript를 비롯한 다른 언어

  • JavaScipt를 비롯한 다른 언어에서는 number 또는 integer 타입들에 대해 boolean 으로 자동으로 conversion을 해준다.
// C ++
int foo = 1;
cin>>foo;
if(foo) cout<<"True"<<endl; // output: True
bool foo2=0; // false 

bool func(){
	int foo2;
	cin>>foo2;
	return foo2;
}

cout<<func(7) // output : 1
cout<<func(0) // output : 0  
  • 0이면 false 로 다른 모든숫자는 true로 conversion을 해준다.
  • 이를 바탕으로 boolean value에 할당도, if /else 의 조건문으로도 , boolean type의 return도 다 허용이 된다.

TypeScript

  • TS에서는 boolean value의 할당과 조건문으로의 사용은 가능하다.
  • 하지만 boolean type의 return은 허용되지 않는다.
function func() : ()=> boolean =()=>{
	let foo : number = 2;
	// type '() => number' is not assignable to type '() => boolean'
	return foo;
}

해결방안

  • boolean type으로의 conversion 은 그다지 추천되지 않는다.
  • return 쪽에 condition statement 를 작성하여 boolean 값으로 return 하게 만드는 방법이 제일 좋다.
function func() : ()=> boolean =()=>{
	let foo : number = 2;
	return foo > 0;
}
profile
Frontend Developer

0개의 댓글