타입스크립트 D-4

nearworld·2022년 7월 12일
0

typescript

목록 보기
4/28

본 게시글은 정확한 정보를 담고있지 않을 수 있으므로 다른 자료도 참고하시길 바랍니다.
만약, 본 게시글이 잘못된 정보를 가지고 있다면 피드백 부탁드립니다. 감사합니다.

타입 추론

let a: number = 123_456_789;

변수 a는 숫자 123456789를 할당받았다. 여기서 타입스크립트 컴파일러는 a가 어떤 데이터 타입인지 할당된 값을 통해 추론할 수 있다.

let a = 123_456_789;

위와 같이 작성하여도, 타입 추론 때문에 타입스크립트 컴파일러는 a의 데이터 타입을 number로 정하게 된다.

any 타입

let b;

변수 b에는 어떠한 값도 할당되어 있지 않다. 이럴 경우, 컴파일러는 any라는 타입으로 추론하게 된다.

noImplicitAny

function anything(number) {
 	console.log(number); 
}

위 코드의 경우 anything 함수의 매개변수 number는 에러를 발생하는데 number가 암묵적으로 any타입을 가지기 때문이라고 한다. 이런 에러 발생을 제거하고 싶다면 tsconifg.json에 있는 noImplicitAny 속성을 건드려줘야 한다.

// tscconfig.json
"noImplicitAny": true

true 값이므로 any타입을 명시적으로 정해주라는 상태다. 그러므로, false값으로 바꾸어서 암묵적으로 any 타입을 가질 수 있도록 설정해보자.

function anything(number) {
 	console.log(number); 
}

그런 다음 위 코드를 다시 에디터에서 본다면, 에러가 사라져있다.
하지만 타입스크립트를 사용하는 이유는 엄격한 타입 컨트롤이므로 암묵적인 타입 지정을 허용한다면 타입스크립트를 사용하고 있는 의미가 퇴색한다. 그러니, 그냥 noImplicitAny라는 속성이 위와 같은 기능을 한다는 것만 기억해두려한다.

배열

let x = [1, 2, '3'];

위의 경우, xany타입을 가지게 된다. 타입이 (string|number)[]로 표현된다. 배열의 3번째 요소가 다른 데이터 타입이기 때문이다. 만약, 전부다 같은 데이터 타입 number 라면,

let x: number[] = [1, 2, 3];

숫자 배열 타입이 될 것이다. 하지만, 타입스크립트의 타입 추론 기능으로 인해 number[] annotation을 설정하지 않아도 된다.

let x = [1, 2, 3];

당장 코드 상에는 데이터타입이 지정되어있진 않지만, 타입 추론기능으로 인해 xnumber[] 타입으로 지정된 상태다.

profile
깃허브: https://github.com/nearworld

0개의 댓글