# Types of TS part One
선택적 타입 (Optional Type)
: 필수적으로 존재하지 않아도 되는 속성
사용법 : 이름 뒤에 물음표(?)를 추가한다.
type Player = {
name : number,
age?: string
}
타입 별칭 (Type Alias)
특정 타입에 이름을 부여하여 코드의 가독성을 높이고 재사용성을 향상시킴
type Age = number;
type Name = string;
type Player = {
name : Name,
age?: Age
}
const nico : Player = {
name : "nico",
}
const lynn : Player = {
name : "lynn",
}
type User = {
id: number;
name: string;
email: string;
};
const getUser = (user: User): string => {
return `User Name: ${user.name}, Email: ${user.email}`;
}
인자 타입/리턴값 타입
function playerMaker(name:string) : Player {
return {
name
}
}
const PlayerMaker = (name:string) : Player => ({name})
const nic = playerMaker("nico")
nic.age = 12
#Types of TS part Two
readonly
: 값을 수정하려고 하면 ts가 멈춰줌. 이는 readonly(읽기 전용)이기 때문에 예상되지 않은 상태 변경에 보호장치를 얻게 되는 것
const numbers : readonly number[] = [1,2,3,4]
undefined/null
let a: undefined = undefined
let b : null = null
Tuple
: 길이와 각 요소마다의 타입이 고정된 배열
const player: [string, number, boolean] = ["nico", 12, false]
any type
- 모든 타입을 허용할 수 있는 타입
- typescript 의 보호 장치를 모두 잃어버리게 하기 때문에 사용하지 않는게 좋음.
- 가끔 써야할 때가 있지만 좋은 규칙은 아님.
const c : any = true
#Types of TS part Three
unknown
- 변수의 타입을 미리 알지 못할 때 사용한다.
- 예를 들어, 만약 api로부터 응답을 받는데 그 응담의 타입을 모른다면 unknown으로 막아줄 수 있음
- 그러면 타입스크립트가 강제로 타입을 확인해줌
let d : unknown;
if(typeof d === 'number') {
let e = d + 1;
}
if(typeof d === 'string') {
let e = d.toUpperCase();
}
void
아무것도 return 하지 않는 함수의 타입
function hello() {
console.log('x')
}
function hello():void {
console.log('x')
}
never
- 함수가 절대 return하지 않을 때 발생
- 예를 들어, 함수에서 exception(예외)이 발생했을 때 사용
function bye(): never {
throw new Error("xxx")
}
function good(name: string | number) {
if(typeof name === "string") {
name // string
} else if( typeof name === "number") {
name // number
} else {
name // 여기에 뭘 쓰던 타입은 never임.
}
}
'TypeScript' 카테고리의 다른 글
[TS] Typescript #day3 (1) | 2024.12.18 |
---|---|
[TS] Typescript #day1 (1) | 2024.12.16 |
[TypeScript] 타입스크립트란? (1) | 2024.02.26 |
[Error] addCase cannot be called with two reducers for the same action type (2) | 2023.11.23 |