
근데 얘네가 뭐야?
Javascript : 클라이언트 측 스크립팅 언어
- 주로 웹 개발시에 사용
- 웹 페이지를 대화식으로 만드는 프로그래밍 언어
- 동적 타입 언어로 변수의 타입을 지정하지 않아도 된다.
- 유연성과 간편함 제공. But, Type error 가능성↑
Typescript : 객체 지향 컴파일 언어
→ Typescript는 MS에서 개발한 프로그래밍 언어, JavaScript의 확장된 버전.
- JavaScript의 상위 집합으로 JavaScript의 모든 기능이 있음.
- 즉 TypeScript에서 JavaScript 코드를 그대로 사용할 수 있다.
- 정적 유형 검사 제공
- 명시적인 Type 지정 가능
- Type Error를 사전에 방지할 수 있다
// Example.js
var a = 1;
var b = 2;
var c = a + b// Example.ts
var a:number = 1;
var b:number = 2;
var c = a + b ;let foo: string = "hello" //타입스크립트
let foo = "hello" //자바스크립트
// 함수선언식 타입스크립트
function multiply1(x: number, y: number): number {
return x * y;
}
//함수 선언식 자바스크립트
function multiply1(x, y) {
return x * y;
}
// 함수표현식 타입스크립트
const multiply2 = (x: number, y: number): number => x * y;
// 함수표현식 자바스크립트
const multiply2 = (x, y) => x * y;
//boolean
let isBoolean: boolean = false;
//null
let isNull: null = null;
//undefined
let isUndefined:undefined = undefined;
// array
let list: any[] = [1,2,"3",false]
let list2: number[] = [2,3,4]
let list3: Array<number> = [1,2,3]
//tuple
let tuple : [string, number]
tuple = ["hello",10]
//enum : 열거형은 숫자값 집합에 이름을 지정한 것
enum Color1 {Red,Green,Blue}
let c1: Color1 = Color1.Green
console.log(c1) //1
//any 타입추론을 할 수 없거나 타입 체크가 필요없는 변수에 사용
let isAny: any = 5
isAny ="string:
isAny = false
//void : 일반적으로 함수에 반환값이 없을 경우
function isUser():void {
console.log("hello")
}
//never : 결코 발생하지 않은 값
function infiniteLoop(): never {
while(true){}
}
// 출처: https://velog.io/@pluviabc1/런타임 에러 VS 컴파일 에러
// Ex.js
function ex(a,b) {
var c = a+b; -> Runtime 에러 발생
return c;
}
var a = 1;
var b = "aa";
console.log( "a+b=" + ex(a,b));
//Ex.ts
function ex(a:number,b:number):number {
var c:number = a+b;
return c;
}
var a = 1;
var b = "aa"; -> Compile 에러 발생
console.log( "a+b=" + ex(a,b));
가독성
//ex.js
funtion ex(a,b) {
var c = a+b;
return c;
}
//ex.ts
function ex(a:number, b:number):number {
var c:number = a+b;
return c;
}
// ex.js
var a = "string" ;
var b = 2020 ;
a = 1111 ;
var c = a + b
console.log("a+b=", c)이 코드를 작성했을 때 console.log는 무엇을 출력하게 될까 ?
// ex.ts
var a:string="string";
var b:number = 2020;
a = 1111;
var c:number = a + b;
console.log("a+b=", c)
여기서는 무엇을 출력하게 될까?
정답은 js는 3131 을 출력하게 된다. ts는 error가 발생하게 된다.
Js는 변수의 자료형을 바꿔가며 사용하는게 가능하나, ts는 불가능하다.
Js로는 3줄짜리 코드가 ts에선 10줄이 되는 경우도 허다하다.