types
- Boolean
let isValid : boolean = false;
- Number
let num:number = 10;
- String
let str : string = 'text';
- Object
let obj : object = {name="yourName", age:20};
- Array
let arr : number[] = [1,2,3,4,5];
or
let arr : Array<number> = [1,2,3,4,5];
- Tuple
let arr: [atring, number] = ['hi',12];
arr[1].concat('test'); // Error, 'number' does not have 'concat'
arr[5] = 'hello;; // Error, Property '5' does not exist on type '[string, number]'
- Enum
enum fruits {apple, banana, orange}
let a: fruits = fruits.apple;
console.log(a) // 값이 자동으로 할당되어 0이 출력됨
enum fruits {apple, banana, orange}
let a: fruits = fruits.apple;
let b: string = fruits[0]
console.log(a) // 0
consolt.log(b) // 'apple'
- 원하는 인덱스 값 부여시, 해당 인덱스부터 순차적으로 생성
enum fruits { apple=12, banana, orange }
let a:string = apple[12]
console.log(a) // 'apple'
enum fruits = { apple='red', banana='yellow', orange='orange'}
let a:string = fruits.apple;
console.log(a) // 'red'
- Any
let str:any = 'hi';
let num:any = 3;
let arr:any ['a',2,true];
- Void
- 변수엔 undefined / null, return 값을 설정할 수 없음
function sayHi() : void {
console.log('Hi')
}
let a:void = null;
let b:void = undefined;
- Null
let a : null = null;
- Undefined
let a:undefined = undefined;
- Never
function invalid(message:string): never {
throw new Error(message);
}
function infiniteAnimate(): never {
while(true) { infiniteAnimate(); }
}
- 사용자 정의 타입
type operation = {
data : number[],
output :(num:numbrt)=>number[]
}
let sum:operation = {
data: [10,30,60],
output(num) {
return this.data.map(n=>n+num);
}
}
let multiply:operation = {
data:[110,230, 8790, 231],
output(num) {
return this.data.map(n=>n*num);
}
}
- Union
// : string 은 함수의 반환값이 문자열임을 명시
function getAge(age:number | string) : string {
if(typeof age === 'number') {
return age.toString();
}else {
return age;
}
}