Skip to content

typescript

type 기본

==="type script"

1
2
3
4
function someFunc(a: TYPE_A, b: TYPE_B): TYPE_RETURN {
  return a + b;
}
let some: TYPE_SOME = someFunc(1, 2);

일반 변수, 매개 변수, 객체 속성(Property) 등에 : TYPE과 같은 형태로 타입을 지정할 수 있습니다.

  • 배열

==="array 예제"

1
2
3
4
5
6
7
8
9
 // 문자열만 가지는 배열
 let fruits: string[] = ['Apple', 'Banana', 'Mango'];
 // Or
 let fruits: Array<string> = ['Apple', 'Banana', 'Mango'];

 // 숫자만 가지는 배열
 let oneToSeven: number[] = [1, 2, 3, 4, 5, 6, 7];
 // Or
 let oneToSeven: Array<number> = [1, 2, 3, 4, 5, 6, 7];

array는 두 가지 형태로 타입을 선언할 수 있습니다.

1
2
3
let array: (string | number)[] = ['Apple', 1, 2, 'Banana', 'Mango', 3];
// Or
let array: Array<string | number> = ['Apple', 1, 2, 'Banana', 'Mango', 3];

union type을 가지는 array

  • 인터페이스
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface IUser {
  name: string,
  age: number,
  isValid: boolean
}
let userArr: IUser[] = [
  {
    name: 'Neo',
    age: 85,
    isValid: true
  },
  {
    name: 'Lewis',
    age: 52,
    isValid: false
  },
  {
    name: 'Evan',
    age: 36,
    isValid: true
  }
];

읽기 전용 배열을 생성

1
2
3
4
5
6
7
8
let arrA: readonly number[] = [1, 2, 3, 4];
let arrB: ReadonlyArray<number> = [0, 9, 8, 7];

arrA[0] = 123; // Error - TS2542: Index signature in type 'readonly number[]' only permits reading.
arrA.push(123); // Error - TS2339: Property 'push' does not exist on type 'readonly number[]'.

arrB[0] = 123; // Error - TS2542: Index signature in type 'readonly number[]' only permits reading.
arrB.push(123); // Error - TS2339: Property 'push' does not exist on type 'readonly number[]'.
  • 튜플
1
2
3
4
let tuple: [string, number];
tuple = ['a', 1];
tuple = ['a', 1, 2]; // Error - TS2322
tuple = [1, 'a']; // Error - TS2322

튜플은 고정 길이라는 점이 array와 다릅니다.

  • 튜플 타입의 array
1
2
3
4
5
let users: [number, string, boolean][];
// Or
// let users: Array<[number, string, boolean]>;

users = [[1, 'Neo', true], [2, 'Evan', false], [3, 'Lewis', true]];
  • 열거형
1
2
3
4
5
6
7
8
9
enum Week {
  Sun,
  Mon,
  Tue,
  Wed,
  Thu,
  Fri,
  Sat
}