[Typescript/2Day] Types

2021/02/23 - [ALL] - [Typescript/3Day] 함수 (1)

2021/02/22 - [Typescript] - [Typescript/2Day] Types

2021/02/19 - [Typescript] - [Typescript/1Day] 실습준비


타입스크립트인만큼 타입을 배워보자

 

1. any

타입들의 대부분으로 뭐든지 할수 있지만 꼭 필요한 상황이 아니면 쓰지마라 (하지만, 실무에서 어쩔수 없이 쓰게되는것들이 있음..)

 

2. unknown

any를 쓸일이 있다면 any대신 unknown을 사용하자. any처럼 모든값을 사용할수 있지만 타입을 검사하기 전까지는 값을 사용할수 없게 강제한다.

let a : unknown = 30 // unknown
let c = a + 10 		 // error

if (typeof a === 'number') {
	let c = a + 10   // 사용가능
}

3. boolean 

true | false

 

4. number

모든 숫자

 

5. bigint

라운딩 관련 에러 걱정없이 큰 정수를 처리할수 있다. (number는 253까지의 정수 표현 가능, bigint는 더 큰수도 계산가능)

 

6. string

모든 문자열의 집합

 

7. symbol

ES2015에 추가된 기능, 객체와 맵에서 문자열 키를 대신하는 용도로 사용

심벌키를 사용하면 알려진 키만 사용하도록 강제할수 있으므로 키를 잘못 설정하는 실수를 방지한다.

 

8. 객체

타입스크립트의 객체(object) 타입은 객체의 형태(shape)를 정의한다. 

// 선언방법
let a: object = {
   b: 'x'
}

let a: { b: number } = { b: 10 }

* index signature 

[key: T]: U같은 문법을 인덱스 시그니쳐라고 부른다

let seats: {
	[seatNumber:string]: string
} = {
	"1A" : "a",
	"2B" : "b"
}

*readonly

let user: {
	readonly firstName: string
} = {
	firstName = "kim"
}

user.firstName = "can not change" // error

*빈객체 {} 나 object 타입은 가능하면 사용하지 않는다. 

 

9. 타입 별칭, 유니온, 인터섹션

타입별칭 : 변수처럼 별칭으로 타입을 선언할수 있다. 

* 두번정의가 불가능

* 블록영역내에서는 재선언 가능

type Age = number
type Person = {
	name: string,
	age: Age
}

유니온(union): 합집합 (ex: type Returns = string | null)

인터섹션(intersection): 교집합

 

10. 배열

let a = [1,2,3] 		// number[]
var b = ['a','b'] 		// string[]
let c: string[] = 'a' 	// string[]
let d = [1, 'a'] 		// (string | number)[]

let g = []				// any[]
g.push(1)				// number[]
g.push('a')				// (string| number)[]

let h: number[] = []	// number[]
g.push('a')				// error

 

11. 튜플

배열의 서브타입. 길이가 고정되었고 타입이 알려진 배열의 일종

이형배열을 안전하게 관리할뿐 아니라 배열타입의 길이도 조절, 순수 배열에 비해 안정성을 높일수 있으므로 사용을 권장

*readonly 읽기전용 : .push, .splice 처럼 내용을 바꾸는 함수 사용 불가능, .concat, .splice같이 내용을 바꾸지 않는 메서드를 사용해야 함

let a: [number] = [1]
let b: [number, string, string] = [1, 'name', 'address']
let c: [number, string?] = [1, 'name'] // [1] 도 가능
let d: [string, ...string[]] = ['name'] // 최소자리만 지정
let e: [string, number, ...string[]] = ['name', 19, 'kim', 'ahn']

 

12. null, undefined, void, never

null 값이 없음
undefined 아직 값을 변수에 할당하지 않음
void return문을 포함하지 않는 함수
never 절대 반환하지 않는 함수

 

13. 열거형(enum)

순서가 없는 자료구조로 값을 열거하는 기법

- enum을 쓸때는 const를 선언하도록 하자

- 명시적으로 값을 할당하자

enum Language {
	English, 
    Korean,
    Russian
}

enum Language {
	English = 0, 
    Korean = 1,
    Russian = 2
}

Language.Russian
Language['English]

* 열거형을 안전하게 사용하는 방법은 까다로우므로 열거형 자체를 멀리 할것을 권한다 (타입스크립트에는 대체제가 많음)

 

 

'Programming > Typescript' 카테고리의 다른 글

[Typescript/3Day] 함수 (1)  (0) 2021.02.23
[Typescript/1Day] 실습준비  (0) 2021.02.19