TS Type Sytem

박지윤·2022년 7월 29일
0

타입 시스템

  • 컴파일러에게 사용하는 타입을 명시적으로 지정하는 시스템
  • 컴파일러가 자동으로 타입을 추론하는 시스템

사용자와 구현자

  • 해당 변수가 할 일을 '타입'이 결정한다.
  • nolmplicitAny 옵션 : 타입을 명시적으로 지정하지x, 추론 중 'any'로 판단하면 컴파일 에러를 발생, 명시적으로 지정하도록 유도
  • strictNullChecks 옵션 : 모든 타입에 자동으로 포함된 'null'과 'undefined'를 제거해준다.
  • noImplicitReturns 옵션 : 함수 내 모든 코드가 값을 리턴하지 않으면, 컴파일 에러

매개변수에 object가 들어오는 경우

  • object literal type //a: {name: string, age:number}

나만의 타입 만들기

interface ParaType{
	name: string;
    age: number;
}

type ParaTypeAlias = {
	name: string;
    age: number;
}
// (a: ParaType)

structural type System(ts)

  • ts 타입 체계 이해
  • 구조가 같으면, 같은 타입!

nominal type system(c,java)

  • 구조가 같아도 이름이 다르면, 다른 타입!

duck typing(python)

  • 어떤 새가 오리처럼 굴면 나는 그새를 오리라고 부른다!

type compatibility

서브 타입
1. 공변 : 같거나 서브 타입인 경우에는 할당이 가능하다.
2. 반병 : 함수의 매개변수 타입만 같거나 슈퍼타입인 경우, 할당 가능

strictFunctionTypes 옵션 : 함수를 할당할 때 함수의 매개변수 타입이 같거나 슈퍼타입인 경우가 아닌 경우, 에러를 통해 경고

type Alias (타입 별칭)

  • interface랑 비슷해보이지만 다름
  • 직접 작성해야하는 타입을 다른 이름을 지정할 수 있다
  • 만들어진 타입의 refer로 사용하는 것인지 타입을 만드는 것은 아님
type NewString = string;

const name: NewString = 'capt';
profile
화이팅~

0개의 댓글