함수 타입 정렬
각 매개변수에 타입을 적어주고, 괄호 뒤에 해당 함수가 반환하는 타입을 입력하면 된다.
아무것도 리턴해주지 않으면 :void적으면 된다.
인터페이스처럼 함수에 매개변수도 옵션별로 저장할 수 있다.


이번의 경우 ${매개변수 || 타입}으로 적었지만 함수를 호출했을 때 오류가 난다. 공백으로 호출할 경우 TS는 좀 더 명시적으로 알려줘야하기 때문이다. 그래서 hell(name?:string)으로 옵션을 있어도 되고, 없어도 되는 선택적 파라미터 형식으로 만든다. 다만 타입은 지켜야 함.
순서에 따라 값이 달라지니 순서도 제대로 적어야한다..선택적 매개변수와 필수 매개변수보다 앞에 있으면 에러가 발생한다고 한다.
나머지 매개 변수의 작성법

...nums : 전달받은 매개 변수를 배열로 나타낼 수 있음. 여기서의 타입은 넘버로 지정.그리고 배열형태을 추가
this

User라는 인터페이스에 sam이라는 객체가 있고, user 타입이고 ,안에는 name이 있다.
그리고 showName의 this.name은 bind를 이용해 this에 sam객체를 강제하고있다. 여기서의 this는 타입이 결정되지 않아 오류가 발생됐다. TS에서 this타입을 정할 때는 함수의 첫번째 매개변수에 this를 쓰고 type을 입력하면 된다.
function ShowName(this:User)

this가 아닌 매개변수로 적으면 아래 사진처럼 this 뒤에 각 매개변수를 적고, a에 값을 각각 적는다) this다음부터 첫번째, 두번째...순서로 적용된다
함수 오버로드는 전달받은 매개변수의 갯수나 타입의 따라 다른 동작을 한다. 외교변수의 타입이나 갯수의 따라 다른 방식으로 동작해야 하는 경우 사용.

리터럴 타입
const의 경우 변할 수 없는 값이니 입력한 값이 그대로 나오지만
let의 경우 변하는 값이니 입력값이 아닌 타입으로 출력된다.
여기서 const같이 정해진 string값을 가진 것을 문자열 리터럴 타입이라고 한다.
식별 가능한 유니온 타입 - 동일한 속성의 타입을 다르게 해서 구분하는 것
교차타입 : 여러 타입을 합쳐서 사용
유니온타입이 a || b라면 교차타입은 &을 의미한다
여러 타입을 하나로 합쳐주는 역할이라고 생각하면 된다. 필요한 기능을 가진 하나의 타입이 만들어지는것


class 선언 (es6기준)

TS에서 클래스 작성 시 멤버 변수(메소드 밖에서 선언된 변수)는 미리 선언을 해줘야한다.
any타입으로 오류가 뜰 경우 타입을 적어주면 된다.
멤버 변수 미리 선언하지않는 방법도 있는데 접근 제한자(public)나 읽기전용(readonly)으로 적어주면 된다.
constructor(public or readonly color:string)
es6의 경우 다른 객체 지양 언어처럼 접근 제한자를 지원하지 않는데 TS는 지원한다. public, private, protected가 있다.
- public은 자식 클래스 나 클래스 인스턴스에 접근이 가능하다. 아무것도 작성하지않으면 public이다
- private의 경우 선언한 class 내부에서만 사용이 가능해 자식클래스에서 사용할 경우 오류가 난다.또는 #을 사용한다.전체적으로 #을 붙여주면( ex: #name) 클래스 내부 오류는 사라졌지만 클래스 인스턴스로 접근하는 부분에서는 에러가 난다..#이나 private 원하는 것을 선택해서 사용하면 될 듯?
- protected도 자식 클래스에서 접근이 가능하다. 다만 public과 다르게 클래스 인스턴스로는 존재할 수 없다.

여기서 값을 수정없게 만들려면 readonly키워드를 사용하면 된다.
해당 클래스에 각각 name을 부여해준다.
this에도 name을 추가해주고, z4에 값을 추가해준다.
스택틱 프로퍼티 : 스태틱을 써주면 동적 멤버 변수를 쓸 수 있고
class.변수로 접근이 가능하다.(클래스 + 점 + 변수명) 얘는 this가 아닌 클래스명을 넣어줘야한다.
ex : static wheels = 4; 라고 정의한다면 console.log(Car.wheels)로 접근한다.
추상 클래스 : abstract키워드를 사용한다. New를 이용해 객체를 만들 수 없고, 상속을 통해서만 가능하다. 구체적인 기능을 정의해 줘야 한다.
'[내일배움캠프] > TIL' 카테고리의 다른 글
| 23.01.25) Typescript 프로젝트를 시작한 60일차 (0) | 2023.01.25 |
|---|---|
| 23.01.20) Typescript 프로젝트를 시작한 59일차 (0) | 2023.01.20 |
| 23.01.18) Typescript기초와 타임어택을 한 57일차 (0) | 2023.01.18 |
| 23.01.17) Typescript기초를 들은 56일차 (0) | 2023.01.17 |
| 23.01.16) Typescript기초와 후발대강의를 들은 55일차 (1) | 2023.01.16 |