Typescript는 Javascript에 타입을 부여한 언어이다. MicroSoft에서 개발,유지 중인 오픈 소스 프로그래밍 언어이며 문법은 꽤나 엄격한 편이다.
Typescript는 Javascript의 엔진을 사용하기 때문에, 실행 시 Javascript로 컴파일되어 동작한다. (컴파일 시, Javascript 파일을 생성)
타입스크립트는 자바스크립트의 슈퍼셋인 오픈소스 프로그래밍 언어이다. 마이크로소프트에서 개발, 유지하고 있으며 엄격한 문법을 지원한다. C#의 리드 아키텍트이자 델파이, 터보 파스칼의 창시자인 Anders Hejlsberg가 개발에 참여한다. 클라이언트 사이드와 서버 사이드를 위한 개발에 사용할 수 있다. 타입스크립트는 자바스크립트 엔진을 사용하면서 커다란 애플리케이션을 개발할 수 있게 설계된 언어이다.자바스크립트의 슈퍼셋이기 때문에 자바스크립트로 작성된 프로그램이 타입스크립트 프로그램으로도 동작한다. 타입스크립트에서 자신이 원하는 타입을 정의하고 프로그래밍을 하면 자바스크립트로 컴파일되어 실행할 수 있다. 타입스크립트는 모든 운영 체제, 모든 브라우저, 모든 호스트에서 사용 가능한 오픈 소스이다. - 위키 백과 -
Javascript는 자료형에 대한 타입은 존재하지만, 변수에 타입이 정해져 있지 않는다. (런타임에서 오류를 발견할 수 있는 동적 타입 언어이다.)
하지만, Typescript는 정적 타입의 컴파일 언어로, Typescript complier 또는 babel을 통해 Javascript 코드로 변환된다.
=> 코드 작성 단계에서 type을 체크하여 오류 예방이 가능하여 디버깅 시간 단축
=> 코드 유지 보수성 상승
=> 미리 타입을 결정하기에 실행 속도가 매우 빠름
시간이 지나 자신의 코드를 수정하거나 다른 사람의 코드를 보거나, 다수의 사람이 프로젝트에 참여하게 되는 경우,
변수와 함수들에 어떤 타입이 어떻게 들어가야 하는지(어떤 타입의 값을 리턴해야하는지, 주석을 세세히 단 것과 마찬가지이다)를 파악할 수 있는 것은 물론, 전체 코드의 흐름을 이해하는데 좋다.
실제로 Javascript를 활용한 프로젝트 진행 시 type이 작성 되어 있지 않아, 함수나 변수 모두 구분이 어려웠다. js-docs를 활용해서 이 문제점을 해결하긴 했지만, Typescript를 반영하면 빠르게 해결 될 일이었다.
Typescript는 Javascript와 100% 호환이 가능하고,
이 외에 클래스,인터페이스 등 객체지향 프로그래밍 패턴을 제공한다.
자바스크립트의 단점은 줄여주고 대신 더 좋은 기능들을 감싼 형태라고 보면 된다.
~~=> 이렇게 좋은데 안 쓰는 이유는 !?! 안 쓰는게 아니라 못쓰는거에요.. 얼른 공부해야지...
~~
function sum(a: number, b: number): number{
return a + b;
}
console.log(sum(10, 20));
npm init -y
npm install typescript -D
npx tsc -v //설치 확인
//실행!!
npx tsc 타스파일명.ts
function sum() {
return a + b;
}
console.log(sum(10, 20));
변수 뒤에 : 을 붙이고 그 뒤에 타입 이름을 추가하면 된다.
js
const taco = 'typescript study';
ts
const taco : string = 'typescript study';
정리하면 !
const(var,let) 변수이름 : 변수 타입 = 나는 변수라네호호
ps. 코드는 SOPT 33기 TS스터디 1주차에서 가져왔습니다 🔥
기본 type에는 12개가 있으며, 기본 type이 아닌 다른 type을 할당한 경우, typescript는 에러를 뱉어냅니다.
string
javascript의 문자열을 의미하는 type을 의미한다.
number
특정 변수가 숫자만 취급한다면 number 타입을 사용한다.
boolean
진위값(true, false)만 취급하는 변수에는 boolean 타입을 사용한다.
let isLogin : boolean = false;
object
객체 유형의 데이터를 취급할 때는 사용
const hero: object = {name: 'captain',age:100};
Array
두가지 방식으로 선언 가능
제너릭 배열타입 쓰기 : Array<배열의 데이터 타입>
배열 요소들을 나타내는 type 뒤에 [] 쓰기 : 배열의 데이터 타입[]
//문자열 배열
let companies: Array<string> = ['네이버', '삼성', '인프런']
let companies: String[] = ['네이버', '삼성', '인프런'];
//숫자열 배열
let cards: Array<number> = [1,2,3,4];
let cards: number[] = [13, 7,3,4];
//배열은 foos:Array<Foo> 같은 형식 보다 foos:Foo[] 처럼 명시하세요.
//[]를 잘 감지할 수 있어서 무언가가 배열임을 알아차리기 더 쉬워집니다.
let items: [string, number] = ['hi',1];
let person: [string, number ];
person = ["minseo", 22];
console.log(person[0].substring(1)); // 성공
console.log(person[1].substring(1)); // 오류, 'number'에는 'substring' 이 없습니다.
let Name: any = 'Seojin'
Name = 100;
enum Color {Red = 1, Green, Blue}
const colorName: string = Color[2];
console.log(colorName); // 값이 2인 'Green'이 출력됩니다.
function warn() :void{
console.log("This is my warning message")
}
let unusable: void = undefined;
return;
}
function iwillNotFinish() :never{
while(true){
...
}
} //무한루프의 경우
function throwError():never{
throw new Error(`omg,,,`);
} //현재 함수는 error만 계속해서 반환하고 있으므로, never 타입에 해당한다.
이 또한 스터디 1주차에서 가지고 온 자료인데, 평소 헷갈렸던 type들을 다시 한번 더 정리할 수 있어서 좋았던 거 같다.
이번 TS 스터디를 들어보게 되었는데, 앞으로의 TS 공부가 너무 기대되고, 내 부족한 실력을 잘 다지고 갔으면 좋겠다는 생각을 했다 !!! 앞으로의 TS 공부 화이팅 !!!🔥
아니 진짜,,, 당신 뭐야,,,, 너무 정리 잘 해줬잖아요!!
타스 단점,,, 다루려고 했지만 스터디원들의 사기를 꺾을까봐,,,;;; 생략했었습니다 하하...하...(대댓글로 정리 잘 해줘써요 고마오요)
사실 타입스크립트를 컴파일 과정을 보다 쉽게 만들어주면서, 실행할 수 있는 여러 칭구들이 쏙쏙 등장하고 있다는 거 알고 계신가요!!? node.js
를 대신해서 만든 bun
이나 node.js
창립자가 만든 deno
등이 있는데요! 저도 아직 익숙하진 않아서,,, deno 관련 아티클 하나 던지구 갑니다 춍춍
https://jaeseokim.dev/Javascript/hello-typescript-with-deno/
정리를 너무 잘해주셔서 읽으면서 복습이 완벽하게 됐어요!!🥺 enum이 javascript엔 없는데 왜 typescript에 생겼을까 고민해봤는데 객체지향프로그래밍 때문이 아닐까.. 생각이 들었어요! java에서도 상태관리(start,running,end)할 때 enum으로 상태를 상수화해서 관리하기도 하거든요! (아닐수도 있어요ㅎㅎ,,)
좋은 글이네용~~ 귯귯~~ 단점 근데 진짜 없나요 알려주세요~!!!!