What is Type Annotation in TypeScript
타입스크립트는 타입 어노테이션을 사용하여 변수, 함수, 객체 등과 같은 식별자의 유형을 명시적으로 지정한다.
: type 구문을 식별자 뒤에 붙이는 타입 어노테이션으로 사용한다.
type은 모든 유효한 유형 가능
식별자에 타입 어노테이션을 추가하면 해당 타입으로만 사용할 수 있다. 식별자가 다른 유형으로 사용되면 타입스클입트 컴파일러에서 오류를 발생시킨다.
Type annotations in variables and constants
| |
위 코드에서 타입 어노테이션은 변수, 상수 이름 뒤에 :을 붙이고 그 뒤에 타입이 온다.
지정한 타입 외 다른 타입 값을 할당하면 컴파일 에러를 발생시킨다.
Type annotation examples
배열
배열 타입 어노테이션은: type[]로 표시한다.1 2let arrayName: type[]; let names: string[] = ['John', 'Jane', 'Peter', 'David', 'Mary'];객체
1 2 3 4 5 6 7 8 9let person: { name: string; age: number }; person = { name: 'John', age: 25 };함수 인자와 반환형
1 2 3 4 5let greeting : (name: string) => string; greeting = function (name: string) { return `Hi ${name}`; };위와 같이 타입 어노테이션을 사용할 경우
string을 인자로 받고,string을 반환하는 모든 함수를greeting에 할당할 수 있다.
Base Type
number
타입스크립트에서 모든 숫자는 부동 소수점값과 큰 정수값에 포함된다.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15let price: number; let price = 9.95; let counter: number = 0; let x: number = 100, y: number = 200; let bin = 0b100; let anotherBin: number = 0B010; let octal: number = 0o10; let hexadecimal: number = 0XA; let big: bigint = 9007199254740991n;string
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19let firstName: string = 'John'; let title: string = "Web Developer"; let description = `This TypeScript string can span multiple lines `; let firstName: string = `John`; let title: string = `Web Developer`; let profile: string = `I'm ${firstName}. I'm a ${title}`; console.log(profile); /** result I'm John. I'm a Web Developer. **/boolean
1 2 3 4 5let pending: boolean; pending = true; // after a while // .. pending = false;
Object Type
타입스크립트 object 타입은 원시 타입이 아닌 모든 값을 표현할 수 있다.
- 타입스크립트 원시 타입
numberbigintstringbooleannullundfinedsymbol
object로 선언된 변수는 원시 타입을 제외한 모든 자료형을 할당할 수 있다.
| |
| |
만약 object로 선언된 변수를 다른 원시 타입으로 다시 할당하려고 하면 에러가 발생한다.
| |
object 타입은 선언될 때 지정한 프로퍼티 목록을 고정적으로 가지게 되어, 선언되지 않은 프로퍼티를 호출하게 되면 에러를 발생시킨다.
| |
💡 자바스크립트는 보유하지 않은 프로퍼티를 호출하면
undefined를 반환한다.
object 타입 내부에 지정되는 프로퍼티들의 타입을 지정할 수 도 있다.
| |
| |
object VS Object
타입스크립트는 첫 번째 대문자만 다른 Object 타입도 있다.
object 타입은 원시 타입이 아닌 모든 값들을 표현하고, Object 타입은 동작하는 모든 객체들을 의미한다.
💡 자바스크립트에 포함된 모든 생성자들은
Object를extend한다. 따라서Object에는 모든 객체가 할당될 수 있다. 즉 동작하는 모든 객체를 의미한다.
The empty type
타입스크립트에서 비어있는 타입을 표현하는 다른 방법으로 {} 가 있는데, object 타입과 유사하게 동작한다.
| |
| |
| |
Array
타입스크립트의 Array는 순서가 있는 데이터 리스트를 의미한다.
| |
| |
| |
| |
위처럼 선언된 skills에 다른 타입을 넣을 경우 에러가 발생한다
| |
배열 타입이 가진 속성과 메소드
| |
유용한 메서드로 forEach(), map(), reduce(), filter() 등이 있다.
| |
여러 타입 섞어 저장하기
| |
| |
Tuple
Tuple은 array에 추가 제약사항이 붙은 형태이다.
- 내부 요소 갯수 고정
- 내부 요소의 타입을 선언할 때 같을 필요는 없음
| |
| |
| |
Optional Tuple Elements
타입스크립트 3.0부터 선택적으로 사용할 수 있는 요소 선언이 추가되었다.
선택적으로 사용할 요소 앞에 ?를 앞에 붙인다.
| |
Enum
Enum은 상수 값들을 그룹으로 묶어 이름 붙인 타입이다.
| |
constant1, constant2, ...는 enum의 멤버가 된다.
| |
| |
isItSummer의 인자인 month는 Month enum에 해당하는 값을 받을 수 있다.
| |
