Type annotaions

변수가 참조하는 값의 type이 무엇인지 typescript에 표시하는 코드입니다.

  • function이 'any' 유형을 반환하고 값을 명확히 해야 할 때
const json = '{"x":10, "y":20}';
const coordinates: { x: number; y: number } = JSON.parse(json);
// JSON.parse 는 any를 반환합니다.
  • 변수를 한 라인에 선언하고 나중에 초기화할 때
let countries: string[] = ['korea', 'japan', 'spain', 'ukraine'];
let foundCountry: boolean;

for (let i = 0; i < countries.length; i++) {
  if (countries[i] === 'korea') {
    foundCountry = true;
  }
}
  • 변수를 추정할 수 없는 유형으로 지정하려는 경우
let numbers: number[] = [-20, -30, 50, 60];
let numberAboveZero: boolean | number = false;

for (let i = 0; i < numbers.length; i++) {
  if (numbers[i] > 0) {
    numberAboveZero = numbers[i];
  }
}

Type inference

Typecript는 변수가 참조하는 값의 type을 파악하려고 합니다.
변수 선언과 초기화가 같은 라인에 있으면 Typescript는 변수 type을 확인합니다.

let kiwi = 5;
// kiwi is number
let beer; // beer is any
beer = 5;

What is a Type System

Type

값을 갖는 다양한 속성 및 함수을 쉽게 참조할 수 있습니다.

"red"

  1. string
  2. 문자열의 속성과 메서드가 모두 포함된 값입니다.

Types

  1. Primitive Types: number, boolean, void, undefiend, string, symbol, null

  2. Object Types: functions, arrays, classes, objects

왜 우리는 타입을 신경써야 하는가

  1. type은 Typecript Compiler에서 오류를 분석하는 데 사용됩니다.
  2. 유형을 사용하면 다른 엔지니어가 코드에 어떤 값이 있는지 이해할 수 있습니다.

타입스크립트는 무엇인가

자바스크립트 종류

자바스크립트는 표준 자바스크립트인 ES5와 ES6 이상 버전을 의미하는 ESNext 그리고 type을 추가한 타입스크립트입니다.
ES5 -> ES6 -> typescript 포함관계 입니다.

타입 기능 장점

개발자들이 타입 오류가 발생했을 때 자바스크립트 보다 쉽게 대처합니다.
그리고 대규모 프로젝트에서 의사소통을 원활히 합니다.

트랜스파일

타입스크립트는 Typescript Compiler를 통해 ES5 자바스크립트로 변환됩니다.
트랜스파일러는 소스코드를 다른 프로그래밍 언어로 변경할 때 사용하고 바이너리 코드로 바꾸는 컴파일러와 구분하기 위해 사용합니다.

EXNext grammer

yield

function* gen() {
  yield* [1, 2];
}

for (const value of gen()) {
  console.log(value);
}

yield 문은 iterator를 생성할 때 사용합니다.
iterator는 독립적으로 존재하지 않고 iterable를 통해 얻습니다.
iterator를 만드는 iterable을 generator라고 합니다.

Promise, async, await

async function get() {
  let values = new Array();
  values.push(await Promise.resolve(1));
}

Typescript grammer

tuple

let numberArray: number[] = [1, 2, 3]; // 배열
let tuple: [boolean, number, string] = [true, 1, 'a']; // 튜플

abstract data type, algebraic data type

대수 타입은 다른 자료형의 값을 가지는 자료형입니다.

type numberOrString = number | string; // 합집합 타입
type animalAndPerson = Animal & Person; // 교집합 타입

+ Recent posts