// Alias Type
type Info = {
name: string,
age?: number,
}
const me : Info = {
name: 'donghyun',
}
// Argument & Return Type
const info = (name: string, age?: number) : Info => ({name, age});
console.log(info('dong'));
원시타입이 아닌 객체에 불변성을 부여할 수 있다?
type Color = {
readonly color: string,
code: number,
}
// fruits에 조작을 가할 수 없고, colors의 color 역시 조작할 수 없다.
const fruits : readonly string[] = ['apple', 'banana', 'lemon'];
const colors : Color = {
color: 'red',
code: 123
}
const fruits_2 : [string, number, boolean] = ['apple', 20000, true];
const fruits_1 : readonly [string, number, boolean] = ['apple', 20000, true];
타입스크립트로부터 벗어나고 싶다?! 그럼 any 타입을 명시하라!
// unknown
let count: unknown;
let name: unknown;
if(typeof count === 'number') {
let total = count + 1;
}
if(typeof count === 'string') {
let upperCase = name.toUpperCase();
}
// void: 아무것도 return하지 않는 함수, 따로 지정하지는 않음
function apple(): void {
console.log('yummy');
}
// never
function error():never{
throw new Error('no!!');
}
function error(name: string|number){
if(typeof name === 'string'){
// string type
} else if (typeof name === 'number') {
// number type
} else {
// never type
}