const add = (a:number,b: number) => a+b;
//아래와 같이 바꿀 수 있다
type Add = (a:number, b:number) => number
//이렇게 써도 됨 type Add = {(a:number, b:number):number}
const add:Add = (a,b) => a+b
const add:Add = (a,b) => a+b
!== const add:Add = (a,b) => {a+b}
같지 않다function add(a, b) {return (a+b)}
와 같다function add(a, b) {a+b;}
결과가 달라진다void
로 처리가 된다type Add = {
(a:number, b:number):number,
(a:number, b:string):number
}
const add:Add = (a,b) => {
if(typeof b === 'string') return a
//a+b가 안될 때 예외처리를 미리 해준다
return a+b
}
type Add2 = {
(a: number, b: number): number,
(a: number, b: number, c: number): number
}
//옵션으로 예외처리
const add2: Add2 = (a, b, c?: number) => {
if (c) return a + b + c;
return a + b;
}
//Next.js를 쓸 때
router.push("/home");
router.push({
path: "/home",
state: 1
});
/////타입지정
type Config = {
path: string,
state: number
}
type Push = {
(config: Config): void,//void는 아무것도 return하지 않는다
(config: string): void
}
const push: Push = (config) => {
//예외처리를 해준다
if (typeof config === "string") console.log(config);
else console.log(config.path);
}
type SuperPrint={
(arr:T[]):T;
}
const superPrint:SuperPrint=(arr)=>{
return arr[0]
}
const a=superPrint([1,2,3])
const b=superPrint([true,false,true])
const c=superPrint(["a","b"])
const d=superPrint([1,2,"a","b",true])
type a = <T>(a:T[]) => T
<T>
로 placeholder해준다type SuperPrint = { (arr: T[], x: M): T }
출처: 노마드코더 타입스크립트 https://nomadcoders.co/typescript-for-beginners