[TypeScript] 기본 타입

304호 하숙생·2022년 7월 12일
0
post-thumbnail

변수 만들 때 타입정하기

typescript는 변수를 만들 때 변수의 타입을 지정할수가있다

let name: string = 'kimcoding'; // String이 아닌 string
let age: number = 20;
let marry: boolean = false;

변수명:타입 이런식으로 작성하면된다

array, object 자료 안에도 타입 지정 하기

여러 자료를 한 곳에 저장하고 싶을 때 array 또는 object 자료형을 사용한다. 근데 그 안에 들어갈 자료들도 전부 타입지정이 가능하다.

Array

let members: string[] = ['kimcoding', 'goodkoding']

array 자료안에 들어갈 타입은 타입명[] 이렇게 작성 하면된다.

Object

let myinfo: {name: string, age: number} = {name: 'kimcoding', age: 19}

object자료안에 들어갈 타입은 내가 만들 object와 똑같은 모습으로 만들면된다

타입을 일일이 지정하면 초보!

그치만 난 초보인걸....🥲
왜냐하면 변수 생성시 타입스크립트가 타입을 자동으로 부여 해주기 때문이다.

let name = 'kimcoding';
let age = 19;

이렇게만 써도 자동으로 name 변수는 string, age 변수는 number를 가지고 있다.
변수명에 마우스 올려보면 확인할수있다.

변수에 들어올 녀석의 타입이 애매한걸?

Union type

변수에 string 또는 number가 들어올수있는데...?

let name: string | number = 'kimcoding';
let age: string | number = 19;

이런식으로 사용하면된다 name,age 변수에 string 또는 number만 들어올수 있고 할당 되는 순간 타입은 string 또는 number중 하나로 정해진다

array, object

let array: (number | string)[] = [1, '2', 3]
let object: {data: (number | string)} = { data: "123" }

any type

아무 타입이나 집어 넣을수있는 타입 이다.

let name: any = 'kim'
name = 123;
name = uundefined;
name = [];

이런식으로 타입을 마구 바꿔도 에러가 나지 않는다 any type을 막쓰면 타입 관련 버그가 생길 경우 추적하기가 어려우니 좋다고 막쓰면 안된다.
좋다말았다🤣

any보다는 unknown 타입이 더 나은듯?

요즘 타입스크립트는 unknown타입을 사용한다고 한다
any와 똑같이 모든 타입을 집어 넣을 수 있지만 타입은 그대로 unknown이다.

let name: any = 'kim'
name = 123;
name = uundefined;

그래서 결론은 아직 뭘 집어넣을지 모르겠는데 약간의 안정성을 도모하고 싶으면 unknown 타입을 써보자고한다 그치만 현실은 코드 짜다가 any, unknown을 사용할 경우가 거의 없다고한🤣

함수에도 타입 지정이 가능하다(2곳)

1.함수로 들어오는 자료(파라미터)
2.함수에서 나가는 자료(return)

function dubble(x: number) : number {
  return x * 2
}

1 .함수로 들어오는 파라미터 타입 지정은 파라미터 우측에 적으면 된다.
2 .return값을 타입 지정을 하고 싶으면 함수명() 우측에 적으면 된다.

함수는 void 타입이 있다

함수는 특이하게 void라는 타입을 사용할수 있다.
return할 자료가 없는 함수의 타입으로 사용가능하다!

function dubble(x: number) : void {
  return x * 2 // 여기서 에러가 난다
}
function dubble(x: number) : void {
   x * 2 // return이 없어야 한다
}

파라미터가 옵션일 때는?

함수에 파라미터 자리를 만들어 놨지만 가끔 파라미터 없이 쓸 때도 있는경우는 어떻게 할까?

function func(x? : number) {
  // 이러쿵....저러쿵....
}

위의 방법처럼 사용하면되고 결국 아래와 같은 뜻이다

x? : number
x: number | undefined
// number가 들어올수도? 아닐수도?

함수도 예외없이 Union type 사용하면...

엄근진 타입스크립트가 시비를걸수있다

function countnumber(x: number | string) {
	return x + 1
}

그냥 쌩 자바스크립트에서는 문자나 숫자나 모두 +1 이 가능하지만 타입스크립트에선 변수의 타입이 number | string 이런 union type인 경우 자료 조작을 금지시킨다. 아직 이 파라미터의 타입이 확실하지 않으니까 파라미터 조작을 일단 타입으로 막고 금지하는 것이다.

profile
304호 하숙생의 코딩일기장

0개의 댓글