기본 문법
1. 타입 주석 / 타입 추론
let n: number = 1 // type annotation
let m = 2 // type interface
2. interface
// 'Person'이라는 인터페이스를 생성.
// Person은 name은 반드시 정의되어야 하며,
// age는 optional(?)로 age를 가질 수 있지만 null, undefined가 허용된다.
interface Person {
name: string // 반드시 정의되어야 한다.
age?: number // optional
}
// 'person'이라는 변수는 인터페이스에 의해 'Person'타입이다. name을 반드시 정의해야한다.
let person: Person = {name: "Jane"}
3. tuple
// array (저장되는 데이터 타입이 모두 같다.)
let numberArray: number[] = [1, 2, 3]
// tuple (저장되는 데이터 타입이 2가지 이상이다.)
let tuple: [boolean, number, string] = [true, 1, 'OK']
4. generic
class Container<T> {
constructor(public value: T) { }
}
let numberContainer: Container<number> = new Container<number>(1)
let stringContainer: Container<string> = new Container<string>('Hello world')
let arrayContainer: Container<number[]> = new Container<number[]>(1, 2, 3)
let booleanContainer: Container<boolean> = new Container<boolean>(true)
5. 대수 타입
합집합
- union(=sum type) => '|' (OR 기호)
- type NumberOrString = number | string // 합집합. number or string
교집합
- intersection(=product type) => '&' (AND 기호)
- type AnimalAndPerson = Animal & Person // 합집합. animal and person