특수 반환타입
function doNotReturn():void{
}
function throError2():never{
throw Error();
}
- while같은 무한루프안에서 사용하는 반환타임
never
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 IMultiplayTwoNumbers{
(x:number, y:number):number;
}
const multiplayTwoNumbers3: IMultiplayTwoNumbers = (x,y)=>{
return x*y;
}
Statement and Expression
function addTwoNumbers(x:number, y:number){
}
const addTwoNumbersExp = (x:number, y:number)=>{
return x+y
}
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
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;
}