타입스크립트 타입 정리(primitive types)
변수 만들때 타입 정하기
타입스크립트는 변수만들 때 변수의 타입을 지정가능함
let 이름: string = 'kim'
변수명:타입으로 정하면 됨
이름이라는 변수는 string 타입이 되며 다른 타입을 할당하려고 하면 에러가 남
여러가지 타입
자주 쓰는 primitive types
- string
- number
- boolean
let 이름 :string = 'kim';
let 나이 :number = 20;
let 결혼했니 :boolean = false;
추가로 null, undefined도 있지만 사용하지 않음
array 또는 object 자료 안에도 타입 지정 가능
여러 자료를 한 곳에 저장하고 싶을 때 array 또는 object 자료형을 사용
그 안에 들어갈 자료들도 전부 타입지정이 가능함
let 회원들 :string[] = ['kim', 'park']
array 자료안에 들어갈 타입은 타입명[ ]으로 지정하면 됨(array 자료에 각각 string이라는 타입을 지정한 것)
let 내정보 : { age : number } = { age : 20 }
object 자료안에 들어갈 타입은 내가 만들 object와 똑같은 모습으로 지정하면 됨
변수명 오른쪽에 오는 것은 전부 타입지정 문법
let 이름 :string = 'kim';
이름 = 30;
타입을 잘 지정해준다면 타입이 실수로 변경될 때 경고성 에러가 남
Type 'number' is not assignable to type 'string'.(2322)
타입을 미리 정하기 어려울때 (union type, any, unknown)
가장 좋은 Union type 사용
변수에 이것 혹은 저것이 들어올수 있다고 타입정의를 하고 싶다면 | 연산자를 씀
OR 연산자 같은 느낌인데 이런 타입을 Union type이라고 부름
let 이름: string | number = 'kim';
let 나이: (string | number) = 100;
var 어레이: (number | string)[] = [1,'2',3]
var 오브젝트: {data : (number | string) } = { data : '123' }
변수에는 string 또는 number만 들어올 수 있음
할당하는 순간 타입은 string 또는 number 중 하나로 변함
any 타입
아무 자료나 집어 넣을 수 있는 타입 any 타입은 타입을 마구 바꿔도 에러가 나지 않음
하지만 any 타입은 사용하면 타입 관련 버그가 생길 경우 추적하기 어렵기 때문에 TS 사용하는 이유가 없어짐
그래서 비상시 쓰는 변수 타입체크 해제기능 이런 용도로 사용함
any 대신 unknown 타입
요즘 TS는 unknown 타입을 사용함
any와 똑같이 모든 타입을 집어 넣을 수 있음
let 이름: unknown = 'kim';
이름 = 123;
이름 = undefined;
이름 = [];
중요한 특징은
- unknown 타입엔 모든 자료 다 집어넣을 수 있음
- 자료집어넣어도 타입은 그대로 unknown
let 이름: unknown;
let 변수1: string = 이름;
let 변수2: boolean = 이름;
let 변수3: number = 이름;
let 이름: unknown;
이름[0];
이름 - 1;
이름.data;
unknown 타입을 다른 곳에 집어넣으려고 하면 에러가 남(any는 에러가 안남)
TS는 정확하고 확실한것을 좋아함 확실하지 않은 타입에 뺄셈해주는것을 싫어함
숫자가 아님것을 뺄셈할 수는 없기 때문
TS에서 뺄셈은 number 류의 타입만 할 수 있고 .name은 object류의 타입만 할 수 있다고 미리 정의되어 있음
그래서 어떤것을 type으로 지정할지 모르겠지만 약간의 안정성을 도모하고 싶다면 unknown 타입을 쓰면됨
'TS > TS(애플코딩)' 카테고리의 다른 글
함수와 methods에 type alias 지정하는 법과 타입스크립트로 HTML 변경과 조작할 때 주의점 (0) | 2023.08.06 |
---|---|
변수에 담은 타입과 Literal Types으로 만드는 const 변수 유사품 (0) | 2023.08.06 |
함수에 타입 지정하기와 타입 확정하기 (0) | 2023.08.06 |
Typescript 컴파일시 세부설정 (tsconfig.json) (0) | 2023.08.06 |
TypeScript 필수문법 10분 정리와 설치 셋팅 (0) | 2023.08.03 |
댓글