일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- DP
- db
- frontend
- 그레이들
- Data Structure
- 리트코드
- TypeScript
- vscode
- Database
- 자바
- 알고리즘
- VIM
- Algorithm
- LeetCode
- 동적 계획법
- Graph
- Javascript
- react
- git
- Redux
- network
- java
- DFS
- 다이나믹 프로그래밍
- 백준
- 프로그래머스
- CS
- Python
- 안드로이드
- BFS
Archives
- Today
- Total
늘 겸손하게
TypeScript - 타입 종류 본문
목차
TypeScript의 타입들
타입스크립트에서 변수에 값이 할당될 때 : (콜론) 기호로 변수에 할당될 값을 고정시킬 수 있다.
let age: number = 30
let name: string = 'Mike'
string
// string
let str: string // 지금은 undefined가 할당되어도 나중에는 string 타입이 와야한다는 의미
let red: string = "Red"
let blue: string = "Blue"
let templateStr: string = `I have color ${red} and ${blue}`
let attachStr: string = red + " and " + blue
number
// number
let num: number // 지금은 undefined가 할당되어도 나중에는 number가 온다.
let integer: number = 6 // 변수명만 integer일뿐 정수가 아닌 number도 할당 가능
let float: number = 3.14 // 변수명만 float일뿐 실수가 아닌 number도 할당 가능
let infinity: number = Infinity
let nan: number = NaN
boolean
// boolean
let isBoolean: boolean
let isTrue: boolean = true
let isFalse: boolean = false
Null / Undefined
// Null / Undefined
let isNull: null
let isUndefined: undefined
console.log(isNull) // isNull이 할당되기 전에 사용되었다고 오류가 발생함
console.log(isUndefined)
배열
// 배열
const fruits: string[] = ['Apple', 'Pear', 'Strawberry']
const numbers: number[] = [1, 2, 3, 4, 5, 6, 7]
const union: (string|number)[] = ['Apple', 1, 'Pear', 2, 3]
const array: [] = [1, 2, 3] // 오류 발생. 빈 배열만 가능. 데이터를 넣고 싶으면 반드시 데이터 타입을 선언해주자
객체
// 객체
const obj: object = {}
const arr: object = []
const func: object = function() {}
const userA: {
name: string
age: number
isAmerican: boolean
} = {
name: 'Mike',
age: 20,
isAmerican: true
}
const userB: {
name: string
age: number
isAmerican: boolean
} = {
name: 'Neo',
age: 25,
isAmerican: true
}
// 위 예시처럼 user 객체 속성의 데이터 타입은 동일하다.
// 이를 interface로 통일시킬 수 있다.
interface User { // 일반적으로 인터페이스는 다른 변수와 구분하기 위해 대문자로 시작한다.
name: string
age: number
isAmerican: boolean
}
const userC: User = {
name: 'Amy',
age: 15,
isAmerican: false
}
const userD: User = {
name: 'Cate',
age: 20,
isAmerican: true
}
함수
// 함수
// 함수의 매개변수 타입과 반환값의 타입을 정할 수 있다.
// add 함수는 number 타입의 값 두개를 x, y 매개변수로 전달받고 number 타입의 값을 반환하는 함수
const add: (x: number, y: number) => number = function(x, y) {
return x + y
}
// 다른 버전. 위 함수와 동일한 형식
const add2 = function (x: number, y: number): number {
return x + y
}
const a: number = add(1, 2)
// '() => void ' 부분이 타입스크립트
const hello: () => void = function () {
console.log("Hello world~")
}
// 다른 버전
const hello2 = function(): void {
console.log("Hello world~")
}
const h: void = hello()
Any
변수에 어떠한 데이터 타입의 값도 할당 가능하다는 뜻.
하지만 변수에 어떠한 데이터 타입도 할당 가능하면 TypeScript를 사용하는 의미가 없어지므로 가능하면 사용하지 않는것이 좋다.
// Any
let hello: any = 'Hello world'
hello = 123
hello = false
hello = null
hello = {}
hello = []
hello = function() {}
Unknown
변수에 어떤 데이터 타입을 적용할지 모르겠다라는 의미.
any 타입의 변수에는 unknown 타입의 값을 할당 가능하나 다른 타입 (boolean, number, string 등등)의 변수에는 unknown 타입의 값을 할당할 수 없다.
// Unknown
// 아직은 어떤 데이터 타입이 할당될지 모르겠다는 의미
const u: unknown = 123
// 모두 오류 난다.
const boo: boolean = u
const num: number = u
const arr: string[] = u
const obj: {x: string, y: number} = u
데이터 타입을 모르겠다면 Any타입 대신 Unknown을 사용할 것.
Tuple
배열 데이터에서 원소에 순서가 있는 경우 사용 가능
// Tuple
const tuple: [string, number, boolean] = ['a', 1, false]
const users: [number, string, boolean][]
= [[1, 'Neo', true], [2, 'Evan', false], [3, 'Lewis', true]]
Void
함수가 반환하는 값이 없는 경우 반드시 void 타입을 정해주어야만 한다.
// void
function hello(msg: string): void {
console.log(`Hello ${msg}`)
}
Never
배열에 타입이 지정되지 않아 어떤 데이터도 넣을 수 없다는 의미
const nev: [] = []
nev.push(3) // 오류 발생
Union
하나 이상의 타입을 할당할 수 있게 된다.
// Union
let union: string | number
union = 'Hello type!'
union = 123
union = false // 오류 발생
Intersection
두 개 이상의 인터페이스를 합칠 수 있다.
// Intersection
interface User {
name: string,
age: number
}
interface Validation {
isValid: boolean
}
const inter: User & Validation = {
name: 'Mike',
age: 25,
isValid: false
}
'Programming > TypeScript' 카테고리의 다른 글
TypeScript - 타입 및 할당 단언 (0) | 2023.11.01 |
---|---|
TypeScript - 타입 추론 (Inference) (0) | 2023.10.31 |
TypeScript - 타입스크립트 사용해보기 (0) | 2023.07.04 |
TypeScript - 타입스크립트 사용 이유 (0) | 2023.06.16 |
TypeScript - 타입스크립트 기초 (0) | 2023.06.13 |