프론트엔드/리엑트

타입스크립트 프로그래밍-3

후누피 2023. 2. 17. 15:17
728x90

타입의 관하여

타입(type): 값과 이 값으로 할 수 있는 일의 집합

 

 

ex1)

 

Boolean 타입의 경우 모든 불(참과 거짓 중 하나)과 불에 수행할 수 있는 모든 연산의 집합.

 

=> 연산(||, &&, ! 등)

 

ex2)

 

number 타입은 모든 숫자와 숫자에 적용할 수 있는 모든 연산, 숫자에 호출할 수 있는 모든 메서드의 집합.

 

=> 연산(+,-,*,/,%,||,&&,? 등) , 메서드(.toFixed, .toPrecision, .toString 등)

 

ex3)

 

string타입은 모든 문자열과 문자열에 수행할 수 있는 모든 연산 문자열에 호출할 수 있는 모든 메서드의 집합.

 

=> 연산(+,||,&&,등) , 메서드(.concat, .toUpperCase 등)

 

function plus(n) {

    return n+n

}

 

=> plus(2)   // 4값이 출력

=> plus('p') //Nan으로 출력

 

매개변수값의 타입을 지정해주자.

 

function plus(n:number) {

    return n+n

}

 

=> plus(2)   // 4값이 출력

=> plus('p') //에러 Ts2345: ' "p" ' 라는 타입의 인수는 'number' 타입의 매개변수에 할당할 수 없음 에러가 뜬다.

 

any란?

 

타입스크립트를 배우고 사용하게되면서 any를 많이 접할수있었다.

 

개발자와 타입스크립트 모두 타입을 알 수 없는 상황에서는 기본 타입인 any로 가정한다.

 

하지만 가급적 사용을 권장하지않는다.

 

그 이유는 타입스크립트를 사용하는이유는 깐깐하게, 까다롭게 오류를 잡아주기 위해서인데,

 

any를 사용하면 무슨 작업이든 다 할 수 있기때문에 자바스크립트와 다를 바 없고

 

타입 검사기가 더이상 작동하지않게된다.

 

그래서, any 대신 unknown을 사용한다.

 

정제를 통해 ㅅ용하기 전까지는 타입스크립트가 unknown 타입의 값을 사용할 수 없게 강제한다.

 

ex)

 

let a : unknown = 30  // a = unknown

let b = a ===123 // boolean

let c = a + 10 // 에러..  a객체의 타입이 unknown임.

 

정제과정은 typeof 와 instanceof 를 사용하여 정제해준다.

 

if ( typeif a === 'number') {

    let d = a +10                // number

}

 

boolean

타입리터럴(type literal)

- 오직 하나의 값을 나타내는 타입

- 모든 곳에서 일어날 수 있는 실수를 방지해 안전성을 추가로 확보해주는 강력한 언어 기능

- 타입스크립트를 독특하게 만들어주는 기능

 

1. 변수를 명시적으로 타입리터럴로 설정 한 경우

 

ex) let d : boolean = true // boolean

 

2. const를 사용하여 타입스크립트가 자동으로 변수의 타입을 리터럴로 추론하게 한 경우

 

ex)  const c = true // true

 

const를 사용했으므로 타입스크립트는 변수의 값이 절대 변하지 않는다고

 

알고 해당 변수가 가질 수 있는 가장 좁은 타입으로 추론하게 된다.

그러므로, boolean이 아닌, 가장 좁은 타입 ture로 추론해준다.

 

※ let 이냐 const 냐에 따라 타입스크립트가 추론하는 타입이 달라진다.

 

 

출처: 타입스크립트 프로그래밍 책.

728x90