Casting

홍범선·2023년 10월 21일
0

타입스크립트

목록 보기
6/34
let codefactory = 'code factory';
let testNumber = 3;

console.log(codefactory.toUpperCase());
//console.log(testNumber.toUpperCase()); => numbertype에 upperCase가 없으므로 에러발생

codefactory 변수는 string타입을 받도록 자동으로 설정되어 있다. 그래서 toUpperCase는 사용가능하다
반면에 testNumber는 number타입이기 때문에 upperCase가 사용할 수 없다.

let sampleNumber: any = 5;
// console.log(sampleNumber.toUpperCase()); //any타입은 string타입일 수도 있으니까 toUpperCase가 가능하도록 한다. 에러발생한다
let stringVar = (sampleNumber as string); // casting을 하게 될 경우 그 타입이 아니더라도 그 타입이라고 가정하도록 할 수 있다. 이것은마음대로 하면안된다.

sampleNumber는 any타입이다.
sampleNumber.toUpperCase를 하게 되면 any타입이기 때문에 string 타입일 수 도 있다고 생각을 한다. 그래서 toUpperCase를 사용할 수 있게 된다.
하지만 실행을 하게 되면 에러가 발생한다.
=> 실제 js에서는 number타입에 upperCase를 사용하게 되는 것과 같다.

console.log(typeof (sampleNumber as string)); // n

number가 나오는데 그 이유는 캐스팅 하는 것은 자바스크립트에서는 아무런 영향이 없다 ts에서만 쓰는 것이기 때문이다. JS에서는 sampleNumber는 백날 캐스팅을 해봤자 number타입이다. TS에서는 string으로 사용할 수 있다. 그래서 마음대로 캐스팅하면 안된다.

=> 캐스팅은 구체화 할 때만 사용하고 남발하지말자

profile
알고리즘 정리 블로그입니다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN