1seul357

TypeScript 본문

TIL

TypeScript

1seul 2022. 7. 27. 22:33

TypeScript

타입스크립트는 자바스크립트에 타입을 부여한 언어이다. 자바스크립트의 확장된 언어라고 볼 수 있으며 브라우저에서 실행하기 위해 파일을 한번 변환해주어야 한다. 이러한 과정을 컴파일이라고 한다.

 

 

특징

컴파일 언어이며 정적 타입 언어이다.

  • 자바스크립트는 동적 타입의 인터프리터 언어로 런타임에서 오류를 발견할 수 있다. 하지만 타입스크립트는 정적 타입의 컴파일 언어로 컴파일러 또는 바벨을 통해 자바스크립트 코드로 변환된다. 코드 작성 단계에서 타입을 체크해 오류를 확인할 수 있고 미리 타입을 결정하기 때문에 실행 속도가 매우 빠르다.

자바스크립트 슈퍼셋이다.

  • 자바스크립트로 작성한 코드는 확장자를 .ts로 변경하고 타입스크립트로 컴파일해 변환할 수 있다.

객체 지향 프로그래밍을 지원한다.

  • 타입스크립트는 ES6에서 새롭게 사용된 문법을 포함하고 있으며 클래스, 인터페이스, 상속, 모듈 등과 같은 객체 지향 프로그래밍 패턴을 제공한다.

 

 

장점

높은 수준의 코드 탐색과 디버깅

  • 코드에 목적을 명시하고 맞지 않는 타입의 변수나 함수들에서 에러를 발생시켜 오류를 사전에 제거할 수 있다. 또한 코드 자동완성을 통해 작업과 동시에 디버깅이 가능해 생산성을 높일 수 있다.

자바스크립트 호환

  • 타입스크립트는 자바스크립트와 호환된다. 앱과 웹을 구현하는 자바스크립트와 동일한 용도로 사용할 수 있다.

라이브러리

  • 대부분의 라이브러리들이 타입스크립트를 지원하며 VSCode에서도 타입스크립트 관련 기능과 플러그인을 지원한다.

 

변수와 함수 타입

변수타입

// 문자열
var str: string = 'hello';

// 숫자
let num: number = 10;

// 배열
let arr: Array<number> = [1, 2, 3];
let items: number[] = [1, 2, 3];
let arr2: Array<String> = ['Capt', 'Thor', 'Hulk'];

// 튜플
let address: [string, number] = ['abc', 100];

// 객체
let obj:object = {};
let person: object = {
    name: 'capt',
    age: 100
};
let person: { name:string, age:number } = {
    name: 'thor',
    age: 1000
}

// 진위값
let show: boolean = true;

 

함수타입

// 함수의 파라미터에 타입을 정의하는 방식
function sum(a: number, b: number) {
    return a+b;
}
sum(10, 20);

// 함수의 반환 값에 타입을 정의하는 방식
function add(): number {
    return 10;
}

// 함수에 타입을 정의하는 방식 (가장 기본적인 방식)
function sum(a: number, b: number): number {
    return a+b;
}

// 함수의 옵셔털 파라미터
function log(a: string, b?: string, c?: string) {    // a는 필수, b는 선택
    
}
log('hello world', 100);

 

 

void와 any

void : 리턴 값이 없음

any : 어떤 형식이든 상관 없음

 

 

인터페이스

인터페이스는 상호 간에 정의한 약속 혹은 규칙을 의미한다.

  • 객체의 스펙 (속성과 속성의 타입)
  • 함수의 파라미터
  • 함수의 스펙 (파라미터, 반환 타입)
  • 배열과 객체를 접근하는 방식
  • 클래스
// 인터페이스 정의
interface User {
    age: number;
    name: string;
}

// 변수에 인터페이스 활용
var seho: User = {
    age: 25,
    name: '세호'
}

// 함수의 구조에 인터페이스 활용
interface SumFunction {
    (a: number, b: number): number;
}

let sum: SumFunction;
sum = function(a: number, b: number): number {
    return a + b;
}

 

 

타입 별칭

타입 별칭은 특정 타입이나 인터페이스를 참조할 수 있는 타입 변수를 의미한다. 새로운 타입 값을 생성하는 것이 아니라 정의한 타입에 대해 쉽게 참고할 수 있게 이름을 부여하는 것이다. 인터페이스와는 프리뷰에 있어서 차이가 있다.

// string 타입 사용
const name: string = 'capt';

// 타입 별칭 사용
type MyName = string;
const name: myName = 'capt';

'TIL' 카테고리의 다른 글

FSD 아키텍처  (0) 2024.07.24
Storybook  (1) 2024.07.23
Vuex  (0) 2022.07.25
Vue.js_02  (0) 2022.07.25
Vue.js_01  (0) 2022.07.25