


자바스크립트 내의 extension에서 prettier 설치 - 코드를 보기 쉽게 읽기 쉽게 해줌
코드를 검사하고 잠재적인 문제들에 대해 경고를 해주는 도구
괄호를 색깔별로 구분해줘서 가독성을 좋게 함. 오류를 낮춰줌
npm i -g typescript명령을 통해 타입스크립트를 자바스크립트로 변환해주는 컴파일러 설치
// app.ts
function logName(name : string) {
console.log(name);
}
logName('lhb');
이 후 터미널에 tsc app.ts 입력
위 코드를 실행해보았는데 다음과 같은 오류가 발생했다.
윈도우 powershell을 "관리자 권한"으로 실행 후
Set-ExecutionPolicy RemoteSigned명령을 입력한다. 그 후Y입력후 Enter키 누르기.
다시 코드를 실행시키면
위와 같이 app.js 파일이 만들어진 것을 볼 수 있음
// app.js
function logName(name) {
console.log(name);
}
logName('lhb');
그 후 터미널에 node app.js를 입력하여 파일을 실행시킬 수 있음
app.js 실행
터미널에 tsc --init 명령 입력하여 타입스크립트의 설정 초기값을 만들어줌
app.ts의 내용을 바꾸어도 app.js 내용이 자동으로 바뀌지 않음. 컴파일을 해줘야 바뀜
tsc -w app.ts명령을 입력하면 컴파일러가 계속 파일을 지켜보고 있음. (변화가 있는지 감시함) 코드가 수정이 되면 (변경이 되면) 저절로 컴파일 해줌
let myname = 'lee';myname을 실수로 이렇게 변경할 수도 있음.let myname = 1;let age = 30;age 변수의 타입을 자동으로 number로 추론함.
타입스크립트에서는 처음 할당된 값이 문자열인데, 재할당한 값이 숫자여서 할당될 수 없기 때문에 오류 발생함. 자바스크립트에서는 오류 발생 X
만약
let myname = 'lim';
myname = 'han'; // 타입추론
문자열로 바꾸면 에러가 발생하지 않음!
object 형태에서도 타입 추론 가능
🔸 number : 숫자 타입으로, 정수와 실수를 포함
🔸 string : 문자열 타입
🔸 boolean : 참, 거짓을 나타내는 불리언 타입
🔸 null : 값이 없음을 나타내는 타입 (의도적으로 사용자가 값을 할당하지 않음 - 능동적임)
🔸 undefined : 값이 할당되지 않는 변수의 기본값인 타입 (수동적)
🔸 object : 객체를 나타내는 타입
🔸 array : 동일한 타입의 요소를 가진 배열을 나타내는 타입
🔸 tuple : 각 요소가 다른 타입을 가질 수 있는 배열을 나타내는 타입
🔸 any : 어떠한 타입이든 할당될 수 있는 타입 (타입을 지정하는데 모호한 경우가 생길 때 임시로 사용하는 타입)
🔸unknown : 타입을 미리 알 수 없는 경우 사용되는 타입
let x : string = '나는 문자열이다.';
let myname:string = 'lim';myname = 1;myname 변수에 string 타입을 지정하여 myname에 숫자 타입을 할당하면 에러가 발생 
?를 붙여줌.implements를 사용함. // app.ts
// 변수의 데이터 타입 명시
let stdId : number = 625;
let stdName : string = 'lhb';
let age : number = 21;
let gender : string = 'female';
let course : string = 'TypeScript';
let completed : boolean = false;
interface Student {
stdId : number;
stdName : string;
age : number;
gender : string;
course : string;
completed : boolean;
}
function getInfo(id : number) : Student
{
return {
stdId : id,
stdName : 'lim',
age : 23,
gender : 'female',
course : 'JavaScript',
completed : true
};
}
console.log(getInfo(1111));
// 함수의 데이터 타입 명시 (매개변수, 리턴타입)
// function Plus(a : number, b : number) : number {
// return a + b;
// }
// 만약 반환 값이 없으면 void 사용
//app.js
// 변수의 데이터 타입 명시
var stdId = 625;
var stdName = 'lhb';
var age = 21;
var gender = 'female';
var course = 'TypeScript';
var completed = false;
function getInfo(id) {
return {
stdId: id,
stdName: 'lim',
age: 23,
gender: 'female',
course: 'JavaScript',
completed: true
};
}
console.log(getInfo(1111));
// 함수의 데이터 타입 명시 (매개변수, 리턴타입)
// function Plus(a : number, b : number) : number {
// return a + b;
// }
// 만약 반환 값이 없으면 void 사용

// app.ts
interface Student {
stdId : number;
stdName : string;
age? : number; // 선택적 프로퍼티
gender : string;
course : string;
completed : boolean;
}
let std = {
stdId : 960615,
stdName : 'hoshi',
age : 29,
gender : 'male',
course : 'node.js',
completed : true
};
function setInfo(student : Student) : void
{
console.log(student);
}
setInfo(std);
// app.js
var std = {
stdId: 960615,
stdName: 'hoshi',
age: 29,
gender: 'male',
course: 'node.js',
completed: true
};
function setInfo(student) {
console.log(student);
}
setInfo(std);

// app.ts
interface Student {
stdId : number;
stdName? : string;
age? : number; // 선택적 프로퍼티
gender? : string;
course? : string;
completed? : boolean;
// setName(name : string) : void;
setName : (name : string) => void;
// getName : () => string;
}
class MyStudent implements Student {
stdId = 960615;
stdName = 'hoshi';
age = 29;
gender = 'male';
course = 'node.js';
completed = true;
setName(name : string) : void { // 오버라이딩
this.stdName = name;
console.log('이름 설정 : ' + this.stdName);
}
}
const myInstance = new MyStudent();
myInstance.setName('호시');
// app.js
var MyStudent = /** @class */ (function () {
function MyStudent() {
this.stdId = 960615;
this.stdName = 'hoshi';
this.age = 29;
this.gender = 'male';
this.course = 'node.js';
this.completed = true;
}
MyStudent.prototype.setName = function (name) {
this.stdName = name;
console.log('이름 설정 : ' + this.stdName);
};
return MyStudent;
}());
var myInstance = new MyStudent();
myInstance.setName('호시');

// app.ts
// 열거형 : 사용자 정의 타입
enum GenderType {
Male = 'male',
Female = 'female',
GenderNeutral = 'neutral'
};
interface Student {
stdId : number;
stdName? : string;
age? : number; // 선택적 프로퍼티
gender? : GenderType;
course? : string;
completed? : boolean;
// setName(name : string) : void;
setName? : (name : string) => void;
getName? : () => string;
}
class MyStudent implements Student {
stdId = 960615;
stdName = 'hoshi';
age = 29;
gender = GenderType.Male;
course = 'node.js';
completed = true;
setName(name : string) : void { // 오버라이딩
this.stdName = name;
console.log('이름 설정 : ' + this.stdName);
}
}
const myInstance = new MyStudent();
myInstance.setName('호시');
function getInfo(id : number) : Student
{
return {
stdId : id,
stdName : 'lim',
// age : 23,
gender : GenderType.Female,
course : 'JavaScript',
completed : true
};
}
let std = {
stdId : 960615,
stdName : 'hoshi',
age : 29,
gender : GenderType.Male,
course : 'node.js',
completed : true
};
// app.js
// 열거형 : 사용자 정의 타입
var GenderType;
(function (GenderType) {
GenderType["Male"] = "male";
GenderType["Female"] = "female";
GenderType["GenderNeutral"] = "neutral";
})(GenderType || (GenderType = {}));
;
var MyStudent = /** @class */ (function () {
function MyStudent() {
this.stdId = 960615;
this.stdName = 'hoshi';
this.age = 29;
this.gender = GenderType.Male;
this.course = 'node.js';
this.completed = true;
}
MyStudent.prototype.setName = function (name) {
this.stdName = name;
console.log('이름 설정 : ' + this.stdName);
};
return MyStudent;
}());
var myInstance = new MyStudent();
myInstance.setName('호시');
function getInfo(id) {
return {
stdId: id,
stdName: 'lim',
// age : 23,
gender: GenderType.Female,
course: 'JavaScript',
completed: true
};
}
var std = {
stdId: 960615,
stdName: 'hoshi',
age: 29,
gender: GenderType.Male,
course: 'node.js',
completed: true
};