#2.2 Types of TS part One
#2.3 Types of TS part Two
#2.4 Types of TS part Three
선택적 파라미터(or 프로퍼티)
const player : {
name: string,
age?: number // ?: 필수가 아닌 옵션 프로퍼티
} = {
name: 'nico'
};
//player.age가 옵셔널 프로퍼티여서 age가 존재하는지 체크해주어야 한다.
if(player.age && player.age < 10) {
}
TypeScript
복사
타입 별칭
//type alias
type Player = {
name: string,
age?: number
}
const nico: Player = { //함수 리턴 타입도 지정할 수 있다.
name: 'nico'
}
const lynn: Player = {
name: 'lynn',
age: 12
}
TypeScript
복사
ReadOnly
type Age = number;
type Name = string;
type Player = {
readonly name: Name
age?: Age
}
const playerMaker = (name: string): Player => ({name})
const jjw= playerMaker('jjw');
jjw.age = 12;
jjw.name = 'jjjjjj'; // readonly 속성의 프로퍼티를 바꾸려고 해서 에러남
TypeScript
복사
const numbers: readonly number[] = [1, 2, 3, 4];
numbers.push(1);
TypeScript
복사
readonly 속성의 배열에 값을 넣으려고 해서 에러남
튜플 (Tuple)
const player: [string, number, boolean] = ['nico', 1, true];
TypeScript
복사
API에서 객체(object) 형태로 리턴받지 못하고 배열형태로 리턴받을 경우 사용할 수 있다.
any
•
아무 타입이 될 수 있다.
•
사용하지 않는 것을 권장한다.
const a: any[] = [1, 2, 3, 4];
const b: any = true;
a + b; //타입이 다른 두 변수지만 에러가 나지 않는다. (자바스크립트처럼 동작)
TypeScript
복사
unknown
let a: unknown;
if(typeof a === 'number') {
let b = a + 1;
}
if(typeof a === 'string') {
let b = a.toUpperCase();
}
TypeScript
복사
void
•
함수 리턴타입이 없는 것을 의미한다.
•
따로 명시해줄 필요는 없다.
•
명시하지 않아도 타입스크립트는 자동으로 인식한다.
never
•
함수가 절대로 리턴하지 않을 때 발생하는 것을 의미한다.