cf. typescript playground : 타입스크립트 연습하기 좋은 사이트
- 인자의 타입
- 인자의 개수
- 객체의 메소드 중 존재하는 메소드 함수만
strongly typed programming language(강타입 프로그래밍 언어)
프로그래밍 언어 중 컴파일러를 사용하는 언어들 : java, c#, c++ ...
문서 전체를 0101 또는 어셈블리 코드 또는 바이트 코드 등 기계어로 컴파일 오니다
-> 어셈블리 코드, 바이트 코드 찾아보기
타입스크립트의 경우에는 컴파일되어서 자바스크립트가 된다
이유 : 브라우저는 타입스크립트를 이해할 수 없기 때문에 (node.js는 둘다 이해)
그럼 어차피 자바스크립트가 되면 같은 문제가 발생하는 건 아닌가?
노농!
타입스크립트는 에러가 있으면 아예 자바스크립트로 컴파일되지 않는다
그러므로 이런 보호장치가 유저가 코드를 실행하는 런타임에 발생하는 것이 아니라 컴파일할 때 발생한다
타입스크립트의 타입 시스템
1. 데이터와 변수의 타입을 명시할 수 있고
2. 타입을 명시하지 않아도 알아서 추론을 해줄 수 있다
ex. let a = "hello"
타입스크립트는 이걸 보고 a가 string type이어야 한다는 것을 안다
그러므로
a = "bye" (가능)
a = 1 (에러)
let c = [1,2,3]
c.push("1") (에러)
const player ={
name: "nico"
}
C, C++ 등은 모든 변수에 대한 타입을 정해줘야 한다. 컴파일러가 이해할 수 있도록!
explicit type은 타입스크립트에서 변수의 타입을 명시적으로 설정하는 것
let b : boolean = "x" (에러)
let b : boolean = false (가능)
-> let b = false(implicit으로 하기만 해도 된다, 이게 더 가독성이 좋다)
let c :number[] = [] //빈 배열은 타입을 추론하기 불가능하므로 명시적으로 써줘야 한다
c.push("1") (에러)