alias
type Combinable = number | string; // 별칭 표기법 function combine(input1: Combinable, input2: Combinable){ ... }
function add(n1:number, n2: number):number { return n1 + n2; } // function 이름(매개변수):함수타입지정{ 함수 몸체 }
// 함수선언 function combineValues(n1, n2){ return n1 + n2 } // 함수의 타입지정 let combineValues: (a: number, b:number) => number; // 매개변수 a, b를 number타입으로 받고 return을 number타입으로 한다. console.log(combineValues(8, 8)) // return 16
function printResult(num: number): void { console.log('Result' + num); }
function add(num1: number, num2: number, cb: (num:number) => void) { const result = num1 + num2 cb(result) } add(10, 20, (result)=>{ console.log(result) }) 또는 add(10, 20, (result)=>{ return result })
unknown : TS의 모든 타입을 가질 수 있지만 다른변수에 할당시 에러를 발생시킬 수 있다.
let myVar: unknown = 'hello' // 이 변수의 타입은 unknown이므로 어떤 타입의 값이든 할당과 재할당이 가능 let myVar = 42; let age: number = myVar; // **오류** myVar 변수의 타입이 명확하지 않으므로 number 타입 변수에 값 할당이 불가능 let age: number = (myVar as number); // unknown 타입 변수는 이렇게 사용할 때 타입을 명시해주어야 함
never : TS의 모든 타입의 하위 타입으로 어떠한 값도 할당 할 수 없다.
// never 변수에는 어떤 값도 할당할 수 없다. // 그래서 아래의 두 코드는 TypeScript에서 컴파일 오류가 발생한다. const first: never = 42; const second: never = 'some text';
그렇다면, never는 언제 사용할까? 많은 사용 방법이 있겠지만 여기서는 일반적으로는 함수가 어떠한 값도 반환하지 않을 때와 타입 추론 예외를 제거하는 방법을 소개한다.
먼저, 아래와 같이 어떠한 값도 반환하지 않는 함수라면 반환 타입을 never로 명시하여 어떠한 값도 반환하지 않음을 알려줄 수 있다.
const fetchFriendsOfUser = (username: string): never => { throw new Error('Not Implemented'); }
never를 사용하여 특정 타입 값을 할당받지 않도록 하는것도 가능하다. 예를 들어 아래의 NonString 타입은 어떤 타입이든 될 수 있지만 string 타입인 경우는 never로 추론하여 string 타입의 값이 할당되지 못하도록 할 수 있다.
type NonString<T> = T extends string ? never : T;
// 문제번호:10870번; 피보나치 수 5
const fs = require("fs");
const { join } = require("path");
const stdin = (
process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `17`
).split("\n");
const input = (() => {
let line = 0;
return () => stdin[line];
})(); // 여기까진 고정으로 사용
// 로직 시작
let num = +input();
function fibonacci(init) {
if (init <= 1) {
return init;
} else {
return fibonacci(init - 1) + fibonacci(init - 2);
}
}
console.log(fibonacci(num));