input : 입력된 값을 받아옴
operation : 입력된 값을 연산하고 처리함.
output : 결과값을 보여줌
모듈을 작성하지 않고 그냥 파일을 작성하게되면 모두 글로벌 스코프로 책정이 된다. 다른 파일에서 이름이 충돌 될 수 있으므로 { } 로컬 스코프로 작성해야한다.
number
const num:number = 123
string
const str:string = "bb"
boolean
undefined
값이 있는지 없는지 아무것도 결정되지 않은상태
변수를 선언할 때 없다고 말하진 않는다.
let age : number | undefined
age = undefined
age = 1
null
let age = number | null
unknown
let notSure: unknown = 0
notSure : "he"
notSure : true
any
let anything: any = 0
anything = "hello"
void
function print(): void {
console.log("hello")
return
}
never
function throwError(message: string): never {
// message -> server (log)
throw new Error(message);
while (true) {}
while : Unreachable code detected. 도달할 수 없는 코드가 감지됨.
objet
let obj: object;
function acceptSomeObject(obj: object) {}
acceptSomeObject({name : "hyojin"})
acceptSomeObject({animal: "dog})
}
function printName(firstName: string , lastName: string){
console.log(firstName, lastName)
}
정해진 인자 갯수, 정해진 타입대로 주지 않으면 에러발생 !
printName("steve","jobs")
printName("hyojin") 두가지 인자를 예상했는데 한가지 인자만 주면 에러 발생
printName("hyojin", 22) 타입이 달라도 에러 발생
?(Optional parameter) 를 추가해주면 됨
두가지 전달 하고 싶지 않을 때
전달해도 되고 안해도 될 때
optional parameter 를 사용하면된다.
(전달하지 않으면 undefined가 호출됨)
function printMessage(message:string) {
console.log(message)
printMessage() 에러발생
function printMessage(message:string = "default message") {
console.log(message)
printMessage()
function addNumbers(...numbers: number[]): number {
return numbers.reduce((a, b) => a + b);
}
console.log(addNumbers(1,2)) // 3
console.log(addNumbers(1,2,3,4)) // 13
console.log(addNumbers(1,2,3,4,5,0)) // 18
}