Ts

3 minute read

static type

타입추론

let에 재할당 하려고할때 잘 안된다

타입 표기가 없는경우 타입을 추론한다 변수할당이 숫자였기때문에 변수를 숫자라고 정한다

타입스크립트 강의 image

타입스크립트 강의 image

타입스크립트 강의 image

에러가뜸 타입 추론 규칙에 의거해서

타입스크립트 강의 image

함수 반환값을 알려주지 않더라도 return에 뺄샘 연산자를 통해서 함수에서 반환될 값이 number라는걸 추론할 수 있다.

타입명시

타입명시란 변수를 선언할때 변수값의 타입을 명시함으로써 변수의 타입을 정의

타입스크립트 강의 image

let a:number = "hello"; //컴파일 에러남
let a:number = 4;  //정상적으로 작동

// a인자 타입과 함수 반환타입을 적어줌
function myfun(a:number)
:void{
}

타입스크립트 강의 image

왼쪽 보면 number string으로 타입을 명시

타입스크립트 강의 image

함수를 반환할때는 void나 any 타입이외에 다른 타입은 모두 반환해야한다. 꼼수로 다른타입에서 반환할라면 null같은 더미값을 반환하는 것

타입스크립트 강의 image

반환되는 객체의 구조를 타입으로 지정해주면서 좀더 자세한 정보를 전달할 수 있다.

인터페이스

인터페이스로 객체구조 정의하기

타입스크립트 강의 image

복잡한 코드를 좀더 간단하게 만들기

타입스크립트 강의 image

인터페이스 만들기 네이밍 규칙은 처음에 대문자로 해주기

만들어지는 인터페이스는 하나의 타입으로 사용을 가능

타입스크립트 강의 image

이런식으로 타입으로 사용이 가능

타입스크립트 강의 image

인터페이스를 타입으로 가지는 값은 인터페이스의 구조를 그 값으로 가지도록 강제된다 -> 객체안의 값들을 하나도 빠짐없이 가지고 있어야 한다

다음의 getStudentDetails 함수는 age 속성을 가지고 있지 않아 컴파일 에러가 난다.

타입스크립트 강의 image

인터페이스에 ?를 붙이면 있어도 되고 없어도 되는 선택적 속성이 되어 에러가 나지 않는다.

타입스크립트 강의 image

인터페이스 안에 메소드를 추가하는 방법

두가지 표현 모두 같은 표현이다.

타입스크립트 강의 image

읽기전용 프로퍼티

객체생성시 할당된 프로퍼티는 바꿀 수 없다

readonly를 써주기

타입스크립트 강의 image

이런식으로 바꾸려고 하면 빨간줄이 뜨면서 에러가 난다.

실제로 인터페이스는 js로 컴파일할때 아무 영향을 끼치지 않는다 오로지 ts의 사용 편의성을 위해서 사용되어지는 개념

Enum + 리터럴 타입

Enum이란 연관된 아이템들을 함께 묶어서 표현할 수 있는 수단 즉 -> 데이터베이스의 도메인같은 개념

//enum 선언 방법
enum GenderType{
    Male,
    Female
}

타입스크립트 강의 image

인터페이스에서 gender 값을 enum으로 바꿔주기

타입스크립트 강의 image

인터페이스로 생성된 변수들의 gender값의 값을 enumName.속성

이렇게 바꿔주기

타입스크립트 강의 image

위와 마찬가지

타입스크립트 강의 image

enum은 실제 js 컴파일할때 js 코드로 나타난다.

enum이 runtime에 존재하는 실재 객체라는 의미이다.

타입스크립트 강의 image

0과 1은 enum의 순서에 따라 숫자를 할당해 이를 구분한다는걸 알 수 있다.

타입스크립트 강의 image

실제로는 다음과 같다

타입스크립트 강의 image

이라고 한다.

타입스크립트 강의 image

만약 숫자인 값을 가지는걸 원하지 않는다면 이런식으로 할당하면 된다

타입스크립트 강의 image

오른쪽 js 보면 숫자였던 부분이 string으로 볼 수 있다.

타입스크립트 강의 image

타입스크립트 강의 image

리터럴 타입을 정희하려면 를 기준으로 string으로 구분할 수 있다.

타입스크립트 강의 image

enum처럼 GenderType.female 이렇게 할 필요 없이 그냥 안에 있는 text를 써 넣으면 된다.

유니언타입, 타입가드, 타입별칭

애니타입이란?

타입스크립트 강의 image

어떤 타입이던 값을 할당할 수 있다.

타입스크립트 강의 image

이런식으로 막 할당해도 에러 안뜬다

하지만 타입스크립트는 타입에 관한 더 많은 정보를 명시할수록 좋음… 때문에 애니타입을 최대한 피하자

애니타입을 사용하는 경우는 써드파티 라이브러리에서 값이나 모듈을 받아올때 타입을 알기 어려우니 이런경우 사용한다

유니언 타입이란

타입스크립트 강의 image

만약 변수의 타입의 후보를 긴가민가 하게 알때 -> 숫자 or 문자인걸 무조건 알때 이런식으로 유니언 타입을 이용

let price : number | string = 5; //정상작동
price = 'free' // 정상작동
price = true; // 컴파일 타입 에러

타입스크립트 강의 image

이런식으로 유니언 타입이 반복된다면 코드의 가독성을 어지럽힐 수 있다.

타입 엘리어시스란?

타입스크립트 강의 image

유니언 타입을 변수화 시켜서 가독성과 재사용성을 높여줄 수 있다.

타입가드란?

타입스크립트 강의 image

이 경우 에러가 뜬다…

price는 string or number지만 itemPrice는 number 타입이기 때문에 햇갈릴 수 있기 때문

이런경우는 typeof를 이용해서 코드 검증을 수행할 수 있다.

타입가드란?

타입스크립트 강의 image

typeof를 이용해서 코드 검증을 수행하면 에러가 사라진다.

이런 타입 검증 과정을 타입 가드라고 한다.

함수작성 방식

타입스크립트 강의 image

함수 반환타입 작성하는 방법

타입스크립트 강의 image

매개변수 타입 설정

타입스크립트 강의 image

함수는 실행할때 매개변수와 인자의 타입을 검증하는 과정을 거친다.

정의된 인자는 모두 필요하다고 가정한다

타입스크립트 강의 image

?를 붙이면 선택적 매개변수로 지정

타입스크립트 강의 image

타입스크립트 강의 image

선택적 매개변수는 반드시 필수적 매개변수 뒤에 위치애햐한다!

타입스크립트 강의 image

타입스크립트 강의 image

기본 매개변수 사용방법 뒤에 문자열을 할당해주는것처럼 해준다!

객체지향 프로그래밍 class와 object 관계 파해치기

타입스크립트 강의 image

타입스크립트 강의 image

클라스 속에서 정의된 함수들은 this로 접근이 가능

생성자, 접근제한자, getter, setter

생성자 : 모든 class는 constructor(생성자)를 가진다. constructor은 객체의 초기화를 담당한다.

타입스크립트 강의 image

생성자는 이런식으로 생성이 가능하다.

타입스크립트 강의 image

Employee 안에 생성자를 정의할때 설정해둔 매개변수 형식대로 넣어주면 class가 생성된다.

타입스크립트 강의 image

지금 형식은 생성자 요소를 모두 강제로 할당하고 있다.

타입스크립트 강의 image

생성자를 선택적 생성자로 만든다면 그 뒤에 인자들도 모두 선택적 인자들로 만들어야 에러가 안난다

타입스크립트 강의 image

타입스크립트 강의 image

접근제한자의 종류는 이렇게 3가지가 있다

타입스크립트 강의 image

public의 경우 이렇게 써줘도 좋지만 아무것도 안쓰면 기본값으로 public이 적용된다.

타입스크립트 강의 image

타입스크립트 강의 image

private에 접근하려면 저렇게 에러가 난다.

비공개로 설정된 객체의 값을 변경하거나 값을 사용하기위해서 getter와 setter을 이용할 수 있다.

타입스크립트 강의 image

getter와 setter

타입스크립트 강의 image

_은 비공개 맴버라는걸 암묵적 동의다.

타입스크립트 강의 image

비공개 변수의 값을 얻는 함수는 get, 변경하는 함수는 set으로 정의하면 된다.

타입스크립트 강의 image

괄호없이 변수 참조하듯이 바로 getter를 사용할 수 있다

타입스크립트 강의 image

constructor + 객체에 대한 정의를 좀더 간결하게 정의하는 방법

Updated: