타입의 지정
type of
console.log(typeof 'hello') //string
- 변수의 타입을 반환해주는 연산자
- 반환되는 타입은 string 문자열로 반환됩니다.
typescript 의 타입
1) string : 문자열 타입
Ex) "Hello world"
2) number : 숫자 타입
Ex) 25, Infinity, NaN
3) boolean : 참/거짓
Ex) true, false
4) object : 객체 타입
interface PersonType{
name: string;
age: number;
isStudent: boolean;
studentNum?: number;
}
const person:PersonType = {
name: 'Alice',
age: 24,
isStudent: true,
}
- 객체 타입을 따로 지정해줄 수 있습니다.
- 타입 지정 시 '?' 를 사용해서 없어도 되는 타입을 추가해줄 수 있습니다.
5) array : 배열 타입
const arr1:string[] = ['a', 'b', 'c']
const arr2:number[] = [1,2,3]
const arr3:(string|number)[] = ['a',10,'hello']
- 원소타입[] 으로 타입을 지정해줄 수 있습니다.
- 여러 타입이 배열 내에 들어가있다면 | 를 사용하여 여러 타입을 적을 수 있습니다.
6) Tuple : 길이와 타입이 고정된 배열
const tup:[string,number,boolean] = ['hello',10,true]
- 배열 내 원소마다 타입을 각자 지정해줍니다.
7) Enum : 열거형 타입
enum BloodType {
A, // 0
B = 200, // 200
O, // 201
AB // 202
}
const myBloodType = BloodType.AB;
console.log(myBloodType) // 202
- 이름이 있는 상수들이 열거되어있는 집합입니다.
- 순서대로 0부터 숫자가 부여되어있으며, 원하는 숫자를 지정해줄 수 있습니다.
8) any : 어떤 타입이든 할당 가능한 타입 - 사용하지 않는것이 좋습니다.
- noImplicitAny : any 타입을 허용하지 않는 옵션으로, any 타입을 사용하면 오류가 납니다.
9) void : 어떤 타입도 존재할 수 없음
- 함수에서 리턴값이 없을때 사용합니다.
10) never : 어떠한 값도 가질 수 없음, 공집합
- 선언한 뒤 어떠한 값도 지정해 줄 수 없습니다.
- 무한루프나 에러 등 종료될 수 없는 함수를 만들 때 사용합니다.
- void 타입은 리턴값이 없을 뿐, 함수가 종료되지만 never는 종료 자체가 될 수 없습니다.
11) null & undefined : 빈값, 정의되지 않은 값
- strictNullCheck 옵션이 꺼져있으면 모든타입 변수의 하위타입으로 취급됩니다.
- strictNullCheck 옵션이 켜져있는경우 일반적인 타입에 null과 undefined을 할당할 수 없게됩니다.
- 이 경우 null | undefined로 해당 타입또한 선언해줘야 합니다.
- 가급적이면 strictNullCheck 옵션을 true로 설정하는것을 추천합니다.
12) symbol 타입
let sym1 = Symbol("hello")
let sym2 = Symbol("hello")
console.log(sym1) // hello
console.log(sym1==sym2) // false
- ES6 에서 새롭게 추가된 타입으로, number나 string과 같은 기본 데이터 타입(원시타입)입니다
- 변경 불가능한 유일한 값을 의미합니다.
- 정의된 값이 같더라도 두 Symbol은 서로 다른 값 취급을 합니다.
- object 타입과 함께 사용하여 object 타입의 key값 으로 적용할 수 있습니다.
13) unknown 타입
// any = 타입 검사를 하지 않음 = 위험함
function upper_any (a:any) {
return a.toUpperCase();
}
// unknown = 엄격한 타입 검사를 요구함 = 상대적으로 안전함
function upper_unknown(a:unknown) {
if(typeof a=== 'string'){
return a.toUpperCase();
}
return '문자열이 아닙니다.'
}
- 말 그대로 알수없는 타입입니다.
- 다른 타입이 들어올 수 있지만, 엄격한 타입 검사를 요구합니다.
- 타입 특정 이전까지는 에러를 내주기때문에, any타입과 유사하지만, 훨신 안전합니다.
타입 추론
// 자동으로 타입을 추론해줍니다.
const obj = {
name: 'Thomas',
age: 15,
subject:{
math: 85,
english: 88,
}
}
- 타입을 지정하지 않아도 타입스크립트에서 타입을 추론하여 지정해주는 것입니다.
- 개발자가 수동적으로 지정해줘야할 타입의 수가 줄어들고, 코드의 전체적인 안정성이 늘어납니다.
- 타입 추론 또한 정확하지는 않으므로 타입이 변할 수 있는 상황에서는 타입을 지정해주는 것이 좋습니다.
'타입스크립트' 카테고리의 다른 글
typescript - 시작 : typescript란? (0) | 2024.06.24 |
---|