diff --git a/dist/app.js b/dist/app.js index 2d982eb..d929331 100644 --- a/dist/app.js +++ b/dist/app.js @@ -1,26 +1,9 @@ "use strict"; -// const ADMIN = 0; -// const READ_ONLY = 1; -// const AUTHOR = 2; -var Role; -(function (Role) { - Role[Role["ADMIN"] = 0] = "ADMIN"; - Role[Role["READ_ONLY"] = 1] = "READ_ONLY"; - Role[Role["AUTHOR"] = 2] = "AUTHOR"; -})(Role || (Role = {})); -var person = { - name: 'Maximilian', - age: 30, - hobbies: ['Sports', 'Cooking'], - role: Role.ADMIN, //0 -}; -person.role = Role.READ_ONLY; -if (person.role === Role.ADMIN) { - console.log(person.role); -} -else if (person.role === Role.READ_ONLY) { - console.log(person.role); -} -else if (person.role === Role.AUTHOR) { - console.log(person.role); -} +var Department = /** @class */ (function () { + function Department(n) { + this.name = n; + } + return Department; +}()); +var accounting = new Department('Accounting'); +console.log(accounting); diff --git a/dist/basics.js b/dist/basics.js deleted file mode 100644 index badc6c2..0000000 --- a/dist/basics.js +++ /dev/null @@ -1,16 +0,0 @@ -"use strict"; -function add(n1, n2, showResult, phrase) { - var result = n1 + n2; //result는 number라고 추론을 한다. - if (showResult) { - console.log(result + phrase); - } - else { - return n1 + n2; - } -} -var number1 = 5; -var number2 = 2.8; -var printResult = true; -var resultPhrase = 'Result is: '; -// resultPhrase = 0; //error -> 타입 추론으로 resultPhrase는 string이다. 따라 0이라는 number타입을 할당할 수 없다. -add(number1, number2, printResult, resultPhrase); diff --git a/package.json b/package.json index d8e39e3..3da0a6b 100644 --- a/package.json +++ b/package.json @@ -15,4 +15,4 @@ "ts-node": "^10.9.2", "typescript": "^5.5.4" } -} +} \ No newline at end of file diff --git a/src/app.js b/src/app.js deleted file mode 100644 index a0d2b94..0000000 --- a/src/app.js +++ /dev/null @@ -1,24 +0,0 @@ -//항상 유니온 타입을 지정하는 것은 많이 번거롭다. 이에 alias 타입으로 사용자 지정 타입을 정할 수 있다. 즉, 타입을 우리가 다로 별칭으로 만들어 낼 수 있다. -function combine(n1, n2, resultConversion) { - var result; - if (typeof n1 === 'number' && typeof n2 === 'number' || resultConversion === 'as-number') { - result = +n1 + +n2; - } - else if (typeof n1 === 'string' && typeof n2 === 'string') { - result = n1 + n2; - } - else { - result = n1.toString() + n2.toString(); - } - // if (resultConversion === 'as-number') { - // return +result; - // } else { - // return result.toString(); - // } -} -var combineAges = combine(20, 30, 'as-number'); -console.log(combineAges); -var combinedStringAges = combine('20', '30', 'as-number'); -console.log(combinedStringAges); -var combineNames = combine('Max', 'Anna', 'as-text'); -console.log(combineNames); diff --git a/src/app.ts b/src/app.ts index 00ce4bd..b21e636 100644 --- a/src/app.ts +++ b/src/app.ts @@ -1,21 +1,9 @@ -let userInput: unknown; - -let userName: string; -userInput = 5; -userInput = 'Max'; - -console.log(typeof userInput); - -if (typeof userInput === 'string') { - userName = userInput; +class Department { + name: string; + constructor(n: string) { + this.name = n; + } } -function generateError(message: string, code: number): never { //:never - throw { message: message, errorCode: code }; -} //generateError는 never타입을 반환한다. 이유는 throw 때문인데 절대적으로 값이 변하면 안되기 때문이다. 따라서 never타입은 다음과 같다. -//never 타입은 어떠한 값도 반환하지 않는 함수의 반환 타입을 나타낸다. 이 타입은 함수가 정상적으로 완료되지 않고 항상 예외를 던지거나 무한 루프에 빠져 끝나지 않는 경우에 사용된다. 오해하지 말아야할 것은 literal type으로 확인을 하면 void로 선언이 되어있지만 throw를 사용하면 무조건으로 never가 반환된다. 따라서 암묵적으로 never를 반환은 하지만 never타입임을 코드에 명시해주는 것이 좋다. - -const resultError = generateError('An error occurred!', 500); -console.log('resultError: ', resultError); //본래 일반적인 함수라면 undefined를 반환해야한다. -//하지만 아무것도 반환되는 것이 없다. 이유는 generateError는 never 타입으로 반환이 되기 때문에 컴파일이 중도 정지가 되는 것이다. -//참고로 throw는 try,catch를 사용해도 무시하지 않고 중도 정지가 된다. \ No newline at end of file +const accounting = new Department('Accounting'); +console.log(accounting); \ No newline at end of file diff --git a/src/basics.ts b/src/basics.ts deleted file mode 100644 index ceab1ff..0000000 --- a/src/basics.ts +++ /dev/null @@ -1,41 +0,0 @@ -function addTemplate(n1: number, n2: number, showResult: boolean, phrase: string) { - const result = n1 + n2; //result는 number라고 추론을 한다. - if (showResult) { - console.log(result + phrase); - } else { - return n1 + n2; - } -} - -const number1 = 5; -const number2 = 2.8; -const printResultTemp = true; -const resultPhrase = 'Result is: '; -// resultPhrase = 0; //error -> 타입 추론으로 resultPhrase는 string이다. 따라 0이라는 number타입을 할당할 수 없다. - -addTemplate(number1, number2, printResultTemp, resultPhrase); - -const person: { - name: string, - age: number, - hobbies: string[]; - role: (number | string)[]; -} = { - name: 'Maximilian', - age: 30, - hobbies: ['Sports', 'Cooking'], - role: [2, 'author'] -}; - -person.role.push('admin'); -person.role[1] = 10; -person.role = [0, 'admin', 'user']; - -let favoriteActivities: any[]; -favoriteActivities = ['Sports', 1]; - -console.log(person.name); - -for (const hobby of person.hobbies) { - console.log(hobby); -} diff --git a/src/functions.ts b/src/functions.ts deleted file mode 100644 index d6fe4fb..0000000 --- a/src/functions.ts +++ /dev/null @@ -1,24 +0,0 @@ -function add(n1: number, n2: number): number { - return n1 + n2; -} - -function printResult(num: number): void { - console.log('Result: ', +num); -} - -function addAndHandle(n1: number, n2: number, cd: (num: number) => void) { - const result = n1 + n2; - return cd(result); -} - -const test = addAndHandle(10, 20, (result) => { - console.log(result); - return result; -}); - -console.log(test); -printResult(add(1, 2)); - -let result: (a: number, b: number) => number; -result = add; -console.log(result(1, 2)); diff --git a/src/union-aliases.ts.ts b/src/union-aliases.ts.ts deleted file mode 100644 index 05537bd..0000000 --- a/src/union-aliases.ts.ts +++ /dev/null @@ -1,31 +0,0 @@ -type Combinable = number | string; -type ConversionCustom = 'as-number' | 'as-text'; - -function combine( - n1: Combinable, - n2: Combinable, - resultConversion: ConversionCustom, -) { - let result; - if (typeof n1 === 'number' && typeof n2 === 'number' || resultConversion === 'as-number') { - result = +n1 + +n2; - } else if (typeof n1 === 'string' && typeof n2 === 'string') { - result = n1 + n2; - } else { - result = n1.toString() + n2.toString(); - } - // if (resultConversion === 'as-number') { - // return +result; - // } else { - // return result.toString(); - // } -} - -const combineAges = combine(20, 30, 'as-number'); -console.log(combineAges); - -const combinedStringAges = combine('20', '30', 'as-number'); -console.log(combinedStringAges); - -const combineNames = combine('Max', 'Anna', 'as-text'); -console.log(combineNames);