TIL-노마드코더 타입스크립트 ~#2.4 type alias, readonly, tuple ...

Younngg·2022년 8월 23일
0

TypeScript

목록 보기
1/6
post-thumbnail
// 데이터와 변수의 타입을 명시적으로 정할 수도 있고,
// 자바스크립트처럼 변수만 생성하고 넘어가도 된다.
// 타입스크립트가 타입을 추론해줌
// 명시적 표현은 최소한으로 사용


// ailas type (별칭)
type Player = {readonly name:string, age?: number}

//optional parameter (선택적 변수) ?

const nico:Player = {
    name: 'nico',
}

const lynn:Player = {
    name: 'lynn',
    age: 22
}

// age가 undefined일수도 있기 때문에, age가 있는지부터 확인해줘야 함
// if(player.age < 10) 은 오류
if(nico.age && nico.age < 10){

}



// 함수 return 값의 타입을 지정하는 방법
function playerMaker(name:string):Player{
    return {
        name
    }
}

const nico1 = playerMaker('nico')


// readOnly
const numbers: readonly number[] = [1, 2, 3, 4]

// Tuple 
// 배열을 만들 수 있게 함. 
// 최소한의 길이를 가져야 하고 특정 위치에 특정 타입이 있어야 함

const player: readonly[string, number, boolean] = ['nico', 22, true]

// unknown

let a:unknown;
// 어떤 작업을 하려면 이 변수의 타입을 먼저 확인해야 함.
if(typeof a === 'number') {
    let b = a + 1;
}
if(typeof a === 'string') {
    let b = a.toUpperCase();
}


// void
// 아무것도 리턴하지 않는 함수를 대상으로 함

function hello(){
    console.log('x')
}

const b = hello();
b.toUpperCase() // 에러 발생


// never
// 함수가 절대 return 하지 않을 때, 예를 들어 함수에서 예외가 발생할 때

// 리턴하지 않고 오류를 발생시키는 함수
function hello1():never{
    throw new Error('xxx')
}

// never는 타입이 두 가지일 수도 있는 상황에 쓸 수 있음
function hello2(name:string|number){
    if(typeof name === 'string'){
        name
    }else if(typeof name === 'number'){
        name
    }else{
        name //name: never
    }
}
profile
8533283@naver.com

0개의 댓글