함수 매개변수function add(a, b) { return a + b;}//이건 안됨~function add(a: number, b: number) { return a + b;}// 명시적으로 타입 정보가 선언되지 않으면 절대 타입을 알 수 없다. 타입스크립트는 함수에 선언된 모든 매개변수가 필수라고 가정한다. -> 타입안정성 강화선택적 매개변수type annotation의 앞에 ?를 추가해 매개변수가 선택적이라고 표시한다. 선택적 매개변수는 항상 | undefined 가 유니언 타입으로 추가 되어있고 암묵적으로 undefined가 될 수 있다. 하지만 선택적 매개변수는 | undefined를 포함하는 유니언 타입 매개변수와 다르다.?으로 표시된 선택적 매개변수가 아닌 매개변수는 값이 명시적으..
null과 undefined를 제외한 모든 값은 그 값에 대한 실제 타입의 멤버 집합을 가지므로 타입스크립트는 모든 값의 타입을 확인하기 위해 객체 타입을 이해해야한다. 객체 타입 선언객체 리터럴과 유사해 보이지만 필드 값 대신 타입을 사용해 선언한다.let hong: { id: number; name: string;};hong = { id: 1, name: "Hong"}; 별칭 객체 타입매번 객체 타입을 계속 작성하는 것은 귀찮다.각 객체 타입에 타입 별칭을 할당해 사용하는 방법이 더 일반적이다.// 타입 별칭(type alias)type TUser = { id: number; name: string;};let hong: TUser;hong = {id: 1, name: 'Hong'}; 구조..
타입 별칭 Type Alias자주 사용될 타입에 이름(별명)을 붙이는 것이다.type SomeType = { id: number | string; name: string; age: number; address: string;}; //type alias 리터럴 타입좀 더 구체적인 버전의 원시 타입이다.원시 타입 값 중 어떤 것이 아닌 특정 원시값으로 알려진 타입이다.// type Name = string; -> 무성의 하다고 볼 수 있다.type Name = "Hong" | "Kim" | "Lee"; 유니언타입유니언: 값에 허용된 타입을 둘 이상의 가능한 타입으로 확장하는 것이다.A or B 가 아니다. 둘 이상의 타입 중 하나라는 뜻이 아니다.둘 이상의 타입으로 확장된 타입에서 일부 속성들의 조..
타입시스템이란?프로그래밍 언어가 프로그램에서 가질 수 있는 타입을 이해하는 방법에 대한 규칙 집합이다. 타입시스템이 코드를 이해하는 법코드를 읽고 존재하는 모든 타입과 값을 이해한다.각 값이 초기 선언에서 가질 수 있는 타입을 확인한다.각 값이 추후 코드에서 어떻게 사용될 수 있는지 그 모든 방법을 확인한다. (추론, 할당 가능성)값의 사용법이 타입과 일치하지 않으면 사용자에게 오류를 표시한다. 타입 추론과정let firstName = "Tom";firstName.length();// Error : This expression is not callable.//Type 'Number' has no call signatures. 코드를 읽고 firstName이라는 변수 이해한다. (Tokeninze/Scan..