function()

GW·2024년 7월 15일
post-thumbnail

특수 반환타입

/**
 * 특수 반환타입
 */
function doNotReturn():void{

}

function throError2():never{
    throw Error();
}
  • while같은 무한루프안에서 사용하는 반환타임 never

Function Type


/**
 * Function Type
 */
type Mapper =(x:string) =>string;


const runner =(callback:Mapper)=>{
    return ['안유진','장원영','레이'].map(callback);
}
console.log(runner((x)=>`아이브멤버: ${x}`));

type MultiplayTwoNumbers =(x:number, y:number)=>number;

const multiplayTwoNumbers:MultiplayTwoNumbers=(x,y)=>{
    return x+y;
}

Interface 함수

/**
 * Interface로 함수 타입 선언
 */
interface IMultiplayTwoNumbers{
    // 인터페이스 안에서는 =>대신 :을 사용함
    (x:number, y:number):number;
}

const multiplayTwoNumbers3: IMultiplayTwoNumbers = (x,y)=>{
    return x*y;
}

Statement and Expression

//Statement(문장)
function addTwoNumbers(x:number, y:number){
}

//expression(표현식)

const addTwoNumbersExp = (x:number, y:number)=>{
    return x+y
}

Statement

/**
 *  Statement
 */
function add(x:number, y:number){
    return x+y;
}
function subtract(x:number, y:number){
    return x-y;
}
function multiply(x:number, y:number){
    return x*y;
}
function divide(x:number, y:number){
    return x/y;
}

expression


/**
 * Expression
 */
type CalculationType =(x:number, y:number)=>number
const add2:CalculationType = function(x,y){
    return x+y
}
const subtract2:CalculationType = function(x,y){
    return x+y
}

Type Predicate

function isNumber(input:any):input is number{
    return typeof input ==='number';
}

console.log(isNumber(10));

interface Doge{
    name:string;
    age:number;
}

interface Cat{
    name:string;
    breed:string;
}
type DogeOrCat= Doge | Cat;
function isDoge(animal:DogeOrCat): animal is Doge{
    return(animal as Doge).age !== undefined;
}

const doge:DogeOrCat={
    name:'doge',
    age:32,
}

if(isDoge(doge)){
    doge;
}else{
    doge;
}

0개의 댓글