mkdir 폴더이름
npm init -y
npm install typescript
npx tsc --init
//자바스크립트 파일 생성
npx tsc 파일이름.ts
node 파일이름.js 로 파일실행
6.1 ts-node 모듈 설치
npm install ts-node
6.2 실행
npx ts-node 파일이름.ts
Javascript에 타입을 부여한 언어로 JavaScript에 확장된 언어이다. Microsoft에 의해서 개발 및 관리되고 있는 오픈소스 프로그래밍 언어로 대규모 애플리케이션을 개발하는데 JavaScript가 어렵고 불편하다는 불만에 대응하기 위해서 개발되었다. JavaScript는 C, Java와 같은 언어와 구별되는 특성이 있다.
let 변수이름:타입;
(const도 가능)
//기본형태
let a: string = "hi";
let b: number = 123;
let c: boolean = true;
let d: object = {
name : "gildong",
age : 28
};
//배열
let numArr: number[] = [1,2,3,4,5];
let strArr: string[] = ["hi", "hello"];
//객체(object)
let person:{
name : string,
age : number
}[];
//객체 배열에는 대괄호 [] 를 넣어준다.
person = [
{
name : "gildong",
age : 20,
},
];
//타입선언
let drink: [string,number];
drink = ["cola", 2000];
//선언과 동시에 초기화
let drink [string, number] = ["cola", 2000];
//readonly : 데이터를 변경할 수 없게 만듬
let drink: readonly[string, number] = ["cola", 2000];
//숫자 열거형
enum Auth{
admin,
user,
guest,
}
console.log(Auth.admin) //결과 : 0
console.log(Auth.user) //결과 : 1
console.log(Auth.guest) //결과 : 2
//문자 열거형
enum Delivery {
pending = "pending",
delivery = "delivery,
finish = "finish"
}
console.log(Delivery.pending) // 결과 : pending
let a: any = ["hi","name",1,2,3]
:object
로 쓰는 것이 아닌 :interface
:로 만든 type을 써준다면 내부에 있는 key의 type까지 지정할 수 있다.// interface 선언
interface Student {
name : string;
grade : number;
isPassed : boolean;
}
// interface사용
const student:Student = {
name : "gildong",
grade : "3",
isPassed : false,
}
// type 만들기
type Gender = "Female" | "male";
//사용
const gender:Gender = "Female"
const gender2:Gender = "female" // 오류
// type에서 설정한 것 이외의 값이
// 들어오면 코드에서 빨간줄로 틀렸음을 알려줌
function sum(a: number, b: number): number{
return a + b;
}
const sum = (a: number, b: number): numer => {
return a + b;
}
const sum = (a: number, b: number):number => a + b
매개변수를 선언하고 호출 시 parameter
전달하지 않아도 오류가 발생하지 않는다.
function sum(a, b, c) {
return a + b + c;
}
console.log(sum(1, 2));
매개변수를 2개 선언했다면, 호출했을 때 반드시 모든 값을 전달해줘야 한다.
function sum(a:number, b:number, c:number){
return a + b + c;
}
console.log(sum(1, 2));
세번째 매개변수인 c에게 값을 전달하지 않을 경우가 생긴다면 ?
를 이용해서 undefined
가 될 수도 있음을 정의한다.
function print(a: number, b: number, c?: number){
console.log(a);
console.log(b);
console.log(c);
}
print(1,2)
function print(a: number, b: number, c: number):void{
console.log(a,b,c);
}
어떤 조건에서도 함수의 끝에 도달할 수 없을 때 사용
function goingOn():never{
while(true){
console.log("go");
}
}
<t>
만약 타입을 특정할 수 없는 함수가 있다면?
예를 들어 배열을 매개변수로 받아 배열의 길이를 리턴하는 함수라면
function arrLength(arr: (number | string | boolean | object | null)[]): number{
return arrLength.length;
}
//
function arrLength(arr: any[]): number {
return arrLength.length;
}
모든 타입의 데이터 타입이 들어올 수 있으므로 위처럼 사용가능하다. 하지만 모든 데이터 타입을 쓰거나 any를 쓰는 것은 typescript를 사용하는 이유가 사라지기 때문에 사용하는 것을 지양한다.
function arrLength2<T>(arr:T[]):number{
return arr.length
}
arrLength2<string>(["a"]);
arrLength2<number>([1, 2, 3, 4]);