TS 기본타입

효딩딩·2023년 6월 11일
0

input : 입력된 값을 받아옴
operation : 입력된 값을 연산하고 처리함.
output : 결과값을 보여줌

모듈을 작성하지 않고 그냥 파일을 작성하게되면 모두 글로벌 스코프로 책정이 된다. 다른 파일에서 이름이 충돌 될 수 있으므로 { } 로컬 스코프로 작성해야한다.

자바스크립트 타입

  • Primitive 타입
  • 한가지의 심플한 데이터를 담을 수 있는 원시 타입.

* 원시타입에는 number, string, boolean, bigint, symbol, null, undefined

* bigint : 숫자타입과 비슷하지만 큰 숫자의 범위를 할당할 수 있다.

  • Object 타입
    좀 더 복잡한 데이터를 담을 수 있는 오브젝트 타입.
    : function array..

타입스크립트 타입

number

const num:number = 123

string

const str:string = "bb" 

boolean

  • true 와 false 만 할당이 가능함.

undefined

값이 있는지 없는지 아무것도 결정되지 않은상태
변수를 선언할 때 없다고 말하진 않는다. 
let age : number | undefined 
age = undefined 
age = 1 

null

  • 명확하게 텅텅 값이 비었다고 알려주는 상태
let age = number | null 

unknown

  • 알 수 없는 / 가능하면 사용 안하는게 좋음.
let notSure: unknown = 0 
notSure : "he"
notSure : true

any

  • 어떤것이든 다 담을 수 있음
let anything: any = 0
anything = "hello"

void

  • 아무것도 없는 / 텅텅 빈
  • 함수를 선언할 때 무언가를 프린팅 하는것이 있으면 이 함수는 출력만 하고 아무것도 리턴하지 않는다.
  • 아무것도 리턴하지 않으면 void type 이 되고 리턴 시 타입을 명시하는것이 좋은 관례이다.
function print(): void {
console.log("hello")
  return
}
  • 변수에 선언해서 쓰는 경우는 극히 드물다.
  • void로 선언하게 되면 undefined 밖에 할당 할 수 밖에 없다.

never

  • throwError : 예상치 못한 핸들링 할 수 없는 에러가 발생했을 때 호출하는 함수이다. 에러 메세지를 받아서 never 를 리턴하게 된다 .발생한 에러메세지를 서버로 보내서
    log를 남기고 다시 로그를 남긴 다음 어플리케이션에서 에러를 던질 수 있다.
    에러를 던지니 어플리케이션이 죽게 된다.
  • 이 함수는 리턴하는 값이 없기 때문에 never 라고 명시해 주면서 내가 리턴할 계획이 전혀 없으니까 그걸 가만해서 코딩해!라고 말해주는것과 동일하다.
  • 에러를 던지거나 리턴되지 않는 경우는 while문을 true로 지정해서 계속 빙글빙글 도는 상태가 되었을 때 never가 된다.
  • never 타입이 있는 상태에서 never가 아닌 케이스는 에러가 뜬다.
function throwError(message: string): never {

// message -> server (log)
  throw new Error(message);
  
  while (true) {} 
while : Unreachable code detected. 도달할 수 없는 코드가 감지됨.
  • 함수에서 절대 return 되지 않는경우 그것을 명시하기 위해 쓰인다.

objet

  • 어떤 타입의 데이터를 담을 수 있다. 원시타입을 제외한 모든 오브젝트 타입을 할당할 수 있다.
  • 광범위한 타입 쓰지 않는게 좋다.
let obj: object;
  
function acceptSomeObject(obj: object) {}
  acceptSomeObject({name : "hyojin"})
  acceptSomeObject({animal: "dog})

}

타입이 있는 함수 정의 방법

1 Optional parameter


function printName(firstName: string , lastName: string){
console.log(firstName, lastName)

}
정해진 인자 갯수, 정해진 타입대로 주지 않으면 에러발생 !

printName("steve","jobs") 
printName("hyojin") 두가지 인자를 예상했는데 한가지 인자만 주면 에러 발생
printName("hyojin", 22) 타입이 달라도 에러 발생

?(Optional parameter) 를 추가해주면 됨

두가지 전달 하고 싶지 않을 때
전달해도 되고 안해도 될 때

optional parameter 를 사용하면된다.
(전달하지 않으면 undefined가 호출됨)

2. default parameter

function printMessage(message:string) {
console.log(message)

printMessage() 에러발생
  • 프린트 메세지를 호출하면서 아무런 인자도 전달하지 않으면 에러발생
function printMessage(message:string = "default message") {
console.log(message)

printMessage() 
  • 아무런것도 전달하지 않아도 자동적으로 defult message 가 호출된다.
  • Optional parameter 는 undefined 를 호출하지만 default parameter 는 기본값이 호출된다.

3. rest parameter

  • 아무런 인자 갯수 재한 없이 알아서 다 더해주는 함수
  • 모든 전달되는 인자들을 파라미터를 이용해서 number 배열로 받아올 것이다.
function addNumbers(...numbers: number[]): number {

return numbers.reduce((a, b) => a + b);
}
  
console.log(addNumbers(1,2)) // 3
console.log(addNumbers(1,2,3,4)) // 13
console.log(addNumbers(1,2,3,4,5,0)) // 18

}

profile
어제보다 나은 나의 코딩지식

0개의 댓글