TypeScript 타입 기초

JavaScript TypeScript

TypeScript?

자바스크립트의 타입을 강제시키는 언어로, 2012년 마이크로소프트에서 개발됐다. 컴파일 시 자바스크립트로 변경되어 실행된다.

TypeScript는 코드가 시간에 따라 변수가 변경되는 방식을 통한 검사를 사용해 타입을 추론하는데, 아래의 검사를 따른다.

Type Predicate
string typeof s === "string"
number typeof n === "number"
boolean typeof b === "boolean"
undefined typeof undefined === "undefined"
function typeof f === "function"
array Array.isArray(a)
// 타입 추론 (Types by Inference)
let aaa = 'hello'; // string으로 타입이 추론됨
aaa = 3; // Error

// 타입 명시
let bbb: string = 'world';

// 문자 타입(선언, 할당 분리)
let ccc: string;
ccc = 'hello world!';

// 숫자 타입
let ddd: number = 10;
ddd = 'Evie'; // Error

// bool타입
let eee: boolean = true;
eee = false;
eee = 'false'; // Error

// 배열타입
let fff: number[] = [1, 2, 3, 4, 5];
let ggg: string[] = ['a', 'b', 'c'];
let hhh: (string | number)[] = [1, 2, 3, 4, 4, 'a', 'b'];

// 객체타입
interface IProfile {
  name: string;
  age: number | string;
  breed: string;
}

const profile: IProfile = {
  name: 'Evie',
  age: 4,
  breed: 'Munchkin',
};
profile.age = '4.5살이지롱';

// 함수타입 => 어디서 몇번이든 호출 가능하므로, 타입 추론 불가: 반드시 타입 명시 필요
const add = (num1: number, num2: number, unit: string): string => {
  return num1 + num2 + unit;
};
const result = add(1000, 2000, '');
console.log(result); // '3000원'

// any타입(javascript와 동일)
let foo: any = 'bar';
foo = 'baz';
foo = 3;

참고
TS for JS Programmers