티스토리 뷰

💥 타입스크립의 필요성

 - 자바스크립트 코드가 너무 지저분하다

 - 코드의 스케일이 커지면서 코드 관리가 안된다

💥 타입스크립트를 사용하면 좋은 점

 - 자바스크립트 기반보다 버그를 줄일 수 있다.

 - 유지보수가 쉽다.

 - 강력한 높은 퀄리티의 코드를 생산할 수 있다.

 

타입스크립트 = 자바스크립트 + 타입체크기능

타입스크립트 환경에 자바스크립트를 코딩하면 동작함

자바스크립트 환경에 타입스크립트를 코딩하면 동작안함

function plus(a,b){
    return a + b;
}

console.log(plus(3, 5));

자바스크립트에서 이 로직을 썼다고 치면,

3과 5를 숫자로 인식하고 a+b = 3 + 5 = 8로 나오게 된다.

하지만 '3', '5'로 적었다면?

자바스크립트는 ' ' 를 보고 알아서 문자열인가? 하고 '3' + '5' = 35 를 출력한다.

 

하지만 타입스크립트는 타입을 지정해 주어야한다.

function plus(a:number,b:number){
    return a + b;
}

console.log(plus('3', '5'));

만약 이런 코드가 적혀있다고 치면 타입스크립트에선 무조건 에러가 난다.

a와 b는 number라며? 근데 '3', '5' 를 내가 어떻게 해? 응 못 해 에러~ 이렇게 되는 것이다.

number 라는 타입을 준다면 타입이 다를 때 에러가 날 수 있는 것이다.

말 그대로 자바스크립트는 알아서 이 타입인가? 하고 본인이 타입을 바꿔서 사용하기 때문에

내가 원하는 값을 얻지 못할 수도 있다.

하지만 타입스크립트는 미리 타입을 지정하기 때문에 내가 타입 실수를 하게되면 바로 에러를 띄운다.

💥 vscode에서 타입스크립트 사용해보기

- npm i -g typescript

- 타입스크립트 확장자 = ts

- tsc --init  = tsconfig.json 파일 생성

 

타입스크립트 자체를 실행시킬 수 없다.

컴파일 단계를 거쳐야하기 때문에 터미널에 tsc [타입스크립트 파일이름.ts] 를 쳐주면된다.

그럼 같은 이름으로 자바스크립트 파일이 생성된다.

안의 코드는 똑같이 나오지만 타입스크립트에서 명시했던 타입들은 나오지 않는다.

그 후에, node [파일이름.js]를 치면 실행할 수 있다.

타입스크립트 파일을 수정할 때마다 자동으로 자바스크립트 파일이 바뀌진 않는다.

매번 컴파일 해준 후에 자바스크립트 파일이 바뀐다. 이런 것들이 꽤나 번거롭고 귀찮다.

해결방법은 터미널에 tsc -w [파일이름.ts] 를 쳐주면된다. -w 는 watch의 약자이다.

말 그대로 컴파일러는 이 파일을 계속 지켜보겠다. 라는 뜻이다. 수정이 되면 바로 자동으로 컴파일 해준다는 것이다.

💥 타입 추론(Type Inference)

 - 타입스크립트는 타입 추론 기능을 통해 변수의 타입을 자동으로 판단할 수 있다.

 - 타입스크립트 컴파일러가 초기에 할당된 값을 바탕으로 변수의 타입을 추론한다.

 - let age = 30; -> 타입스크립트는 age 변수의 타입을 자동으로 number로 추론한다.

 - 타입 추론은 코드를 간결하게 작성할 수 있도록 도와주지만 타입을 명시적으로 지정하는 것이 더 명확하다.

 - 타입 추론이 모호한 경우나 복잡한 로직에서는 타입을 명시하는 것이 좋다.

💥 데이터 타입

 - 타입스크립트에서는 다양한 데이터 타입을 지원

 - 데이터 타입은 크게 기본 데이터 타입, 객체 타입, 특수 타입으로 나눌 수 있음

💥 기본 데이터 타입

 - number : 숫자 타입 / 정수와 실수를 포함

 - string : 문자열 타입

 - boolean : 참, 거짓을 나타내는 불리언 타입

 - null : 값이 없음을 나타내는 타입

 - undefined : 값이 할당되지 않는 변수의 기본값인 타입

💥 객체 타입

 - object : 객체를 나타내는 타입

 - array : 동일한 타입의 요소를 가진 배열을 나타내는 타입

 - tuple : 각 요소가 다른 타입을 가질 수 있는 배열을 나타내는 타입

💥 특수 타입

 - any : 어떠한 타입이든 할당될 수 있는 타입

 - unknown : 타입을 미리 알 수 없는 경우 사용되는 타입

💥 타입 명시

 - 변수를 선언할 때 변수 값의 타입을 명시함으로써 변수의 데이터 타입을 지정한다.

💥 변수에 데이터 타입을 지정하는 방법

 - 변수 선언 시 데이터 타입을 지정한다

 - 타입스크립트를 자바스크립트로 컴파일 할 때 데이터 타입에 다른 값이 할당되면 오류를 발생시켜 알려준다.

let myname : string = 'lee';
myname = 1;

 -> myname 변수에 string 타입을 지정하여 myname에 숫자 타입을 할당하면 오류를 발생시킴

 

💥 인터페이스 실습

let stdId : number = 1111;
let stdName : string = 'lee';
let age : number= 20;
let gender : string = 'male';
let course : string = 'Typescript';
let completed : boolean = false;

interface Student{
    stdId : number;
    stdName? : string;
    age? : number;
    gender? : string;
    course? : string;
    completed? : boolean;
    setName : (name : string) => void;
}

class MyStudent implements Student{
    stdId = 91011;
    stdName = 'park';
    age = 30;
    gender = 'male';
    course = 'node.js';
    completed = true;

    setName(name : string) : void{
        this.stdName = name;
        console.log('이름 설정 : ' + this.stdName);
    }
}

const myInstance = new MyStudent();
myInstance.setName('엘리스');

let std = {
        stdId : 91011,
        stdName : 'park',
        age : 30,
        gender : 'male',
        course : 'node.js',
        completed : true
}
function setInfo(student : Student) : void{
    console.log(student);
}

객체가 제대로 생성이 되었고, 그 객체를 통해서 '엘리스'로 잘 반영이 된 걸 볼 수 있다.

 

 - 인터페이스는 'string'이나, 'number' 타입처럼 데이터 타입으로 사용이 가능하다.

 - 선택적 프로퍼티로 지정하려면 속성값 뒤에 ?를 붙여준다.

 - 메소드도 인터페이스 내에서 선언 가능하다.

 - 인터페이스를 클래스에 상속할 수 있다.

💥 열거형 실습

let stdId : number = 1111;
let stdName : string = 'lee';
let age : number= 20;
let gender : string = 'male';
let course : string = 'Typescript';
let completed : boolean = false;

enum GenderType{
    Male = 0,
    Female = 1,
    GenderNeutral = 2
}

interface Student{
    stdId : number;
    stdName? : string;
    age? : number;
    gender? : GenderType;
    course? : string;
    completed? : boolean;
    setName? : (name : string) => void;
    getName? : () => string;
}

class MyStudent implements Student{
    stdId = 91011;
    stdName = 'park';
    age = 30;
    gender = GenderType.Male;
    course = 'node.js';
    completed = true;

    setName(name : string) : void{
        this.stdName = name;
        console.log('이름 설정 : ' + this.stdName);
    }
}

const myInstance = new MyStudent();
myInstance.setName('엘리스');

function getInfo(id : number) : Student
{
    return {
        stdId : id,
        stdName : 'kim',
        // age : 21,
        gender : GenderType.Female,
        course : 'javascript',
        completed : true
    };
}

let std = {
        stdId : 91011,
        stdName : 'park',
        age : 30,
        gender : GenderType.Male,
        course : 'node.js',
        completed : true
}
function setInfo(student : Student) : void{
    console.log(student);
}

열거형(enum)은 한정된 데이터들을 열거형 타입인 enum 으로 묶어줄 수 있다.

이렇게 묶어주면 좀 더 편리하게 프로그래밍을 할 수 있다.

'웹 개발 공부하기' 카테고리의 다른 글

[01.09] 구조체  (0) 2025.01.12
[01.09] 함수 포인터  (0) 2025.01.12
[01.08] 가장 이해안되는 포인터💥  (0) 2025.01.11
[01.08] C언어는 처음이지? 2🙄  (0) 2025.01.08
[01.07] C언어는 처음이지?😆  (0) 2025.01.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함