typescript는 변수를 만들 때 변수의 타입을 지정할수가있다
let name: string = 'kimcoding'; // String이 아닌 string
let age: number = 20;
let marry: boolean = false;
변수명:타입 이런식으로 작성하면된다
여러 자료를 한 곳에 저장하고 싶을 때 array 또는 object 자료형을 사용한다. 근데 그 안에 들어갈 자료들도 전부 타입지정이 가능하다.
let members: string[] = ['kimcoding', 'goodkoding']
array 자료안에 들어갈 타입은 타입명[] 이렇게 작성 하면된다.
let myinfo: {name: string, age: number} = {name: 'kimcoding', age: 19}
object자료안에 들어갈 타입은 내가 만들 object와 똑같은 모습으로 만들면된다
그치만 난 초보인걸....🥲
왜냐하면 변수 생성시 타입스크립트가 타입을 자동으로 부여 해주기 때문이다.
let name = 'kimcoding';
let age = 19;
이렇게만 써도 자동으로 name 변수는 string, age 변수는 number를 가지고 있다.
변수명에 마우스 올려보면 확인할수있다.
변수에 string 또는 number가 들어올수있는데...?
let name: string | number = 'kimcoding';
let age: string | number = 19;
이런식으로 사용하면된다 name,age 변수에 string 또는 number만 들어올수 있고 할당 되는 순간 타입은 string 또는 number중 하나로 정해진다
let array: (number | string)[] = [1, '2', 3]
let object: {data: (number | string)} = { data: "123" }
아무 타입이나 집어 넣을수있는 타입 이다.
let name: any = 'kim'
name = 123;
name = uundefined;
name = [];
이런식으로 타입을 마구 바꿔도 에러가 나지 않는다 any type을 막쓰면 타입 관련 버그가 생길 경우 추적하기가 어려우니 좋다고 막쓰면 안된다.
좋다말았다🤣
요즘 타입스크립트는 unknown타입을 사용한다고 한다
any와 똑같이 모든 타입을 집어 넣을 수 있지만 타입은 그대로 unknown이다.
let name: any = 'kim'
name = 123;
name = uundefined;
그래서 결론은 아직 뭘 집어넣을지 모르겠는데 약간의 안정성을 도모하고 싶으면 unknown 타입을 써보자고한다 그치만 현실은 코드 짜다가 any, unknown을 사용할 경우가 거의 없다고한🤣
1.함수로 들어오는 자료(파라미터)
2.함수에서 나가는 자료(return)
function dubble(x: number) : number {
return x * 2
}
1 .함수로 들어오는 파라미터 타입 지정은 파라미터 우측에 적으면 된다.
2 .return값을 타입 지정을 하고 싶으면 함수명() 우측에 적으면 된다.
함수는 특이하게 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가 들어올수도? 아닐수도?
엄근진 타입스크립트가 시비를걸수있다
function countnumber(x: number | string) {
return x + 1
}
그냥 쌩 자바스크립트에서는 문자나 숫자나 모두 +1 이 가능하지만 타입스크립트에선 변수의 타입이 number | string 이런 union type인 경우 자료 조작을 금지시킨다. 아직 이 파라미터의 타입이 확실하지 않으니까 파라미터 조작을 일단 타입으로 막고 금지하는 것이다.