변수타입
// JS 문자열 선언
const str = "hello"l
// TS 문자열 선언
let str:string = "hello";
let num : number = 10;
// TS 배열 선언
let arr : Array<number> = [1, 2, 3]; // arr라는 배열은 안에 number만 들어올 수 있는 Array이다
let items : number[] = [1, 2, 3];
let animal : Array<string> = ["cat", "dog"] // 배열 안에 숫자를 넣으면 빨간줄이 생긴다
// TS 튜플 선언
let address : [string, number] = ["gangnam", 123]; //배열의 각각 index에 타입을 정의 할 수 있다
// TS 객체 선언
let obj: object = {};
let preson: object = {name : "cat", age: 100};
// 객체의 경우에 어떤 속성이 들어오든지 신경을 크게 신경쓰지않는다 객체속성을 유지하기 때문
let person2: {name: string, age: number} = {name : "thor", age: 1}
// 하지만 선언해주어도 상관은 없다
// TS 진위값
let show: boolean = true;
함수
// 함수의 파라미터와 반환 값를 정의하는 방식 === 함수의 타입을 정의하는 방식
function sum(a: number, b: number): number {return a + b}
// 불필요한 인자가 추가로 들어간 경우(30, 40이 추가로 들어간 경우) => 에러
// 하나밖에 안써도 에러임
sum(10, 20, 30, 40)
sum(10)
// 함수의 선택적 파라미터(옵셔널 파라미터)
// 항상 정해진 개수의 인자를 넘기지 않고 유동적으로 인자의 갯수를 변경하고 싶을 때 사용
// ? 를 추가하면서 사용하면 된다.
const log (a: string, b?: string, c?: string) => {}
log("hi", "hello", "bye");