let a_str = "hello"
// 첫번째 방법 타입스크립트는 변수의 타입을 추론할 수 있다. 무조건 정해줘야 하는건 아님
a_str = "bye"
// string에서 string으로 바꾸는 것은 참견하지 않는다.
a_str = 1
// Type 'number' is not assignable to type 'string'.(2322)
// 근데 string -> number 는 안됨
let a_arr = [1, 2, 3, 4]
a_arr.push("대충 문자열")
let a_obj = { name: "jaejun" }
a_obj.name = 1
// 객체타입도 문제없이 가능
let b: boolean = "x"
// Type 'string' is not assignable to type 'boolean'.(2322)
// 두번째 방법 b의 타입은 boolean만 가능하다고 정해주기
let b_: boolean = false
let b__ = false
// 모두 가능
let c = []
// let c: any[]
c.push("jaejun")
let c_: number[] = []
c_.push("jaejun")
// Argument of type 'string' is not assignable to parameter of type 'number'.(2345)
// 이렇게 무엇이 들어갈지 모르는 경우에는 명시적 표현을 하나, 기본적으로 추론하게 냅두는게 타자를 줄일 수 있음.