typescrips는 javascript의 슈퍼셋이다. 즉, javascript의 기능을 사용하면서 typescript의 기능을 사용할 수 있다. typescript의 이름 그대로 javascript의 type을 정의해주는 것이 typescript이다.
let a = "철수"
a = 123
javascript에서는 변수 a에 어떠한 type이 들어와도 상관이 없고 재할당을 할 때 다른 type의 형태가 들어와도 재할당이 가능했다.
let a = "철수"
a = 123 //오류
typescript는 javascript와 달리 변수에 type이 지정이 된다. 변수 a 에 철수라는 값이 할당이 되면서 변수 a의 type은 string이 된다. 이처럼 typescript가 초기값을 보고 type을 추론해서 지정하는 것을 타입추론이라고 한다. 이 때 변수 a의 type은 string이기 때문에 a의 값의 string이외에는 다른 type이 들어와서는 안 된다.
let a:string = "철수"
변수 a에 : 으로 type을 명시해주는 것이 타입명시라고 한다.
let a:number[] = [1,2,3,4,5]
배열에 경우에는 type을 명시해주고 []를 붙혀주면 된다. 이때 배열안에 요소들은 숫자들로만 이루어져야 한다. 만약 다른 type이 들어간다면 오류가 발생한다.
let a:(number|string) = [1,2,3,"철수"]
만약 배열안에 숫자와 문자를 동시에 쓰고 싶다면 ()안에 ||를 사용해서(typescript에서는 | 로 축약이 가능하다.) type들을 정의해준다.
interface IProfile {
name:string
age: string | number
school: string
hoddy?: string //있어도 돠고 없어도 되고 ?로 표시
}
let profile: IProfile = {
name:"철수",
age: 8,
school: "다람쥐초등학교"
}
객체에 경우 interface를 통해서 type들을 정의해준다. interface에 정의된 속성들은 꼭 사용해야하면 쓸 수도 있고 안 쓸수도 있는 경우에는 키 뒤에 ? 를 붙혀서 표시해준다.