# function overload in vue [Ts playground](https://www.typescriptlang.org/play?#code/PTAEHsDcFMCcBtwEMAmoDOBLA5gOyQC4Cus06ogWdqCV-gFABmRuAxgZuLqAA6oqa7YAKJPHgAuULiIBbAEZwAlOPAyAVtBYBueoxZsO3FL34CC4TgEFcKAELgCpqeMmy4AGlDxodApZQAlHAALAidpOVhFCFV1Ai0GZlZ2Lh4+QVNOUJdYd1ggkIkwt1AZOwdM8PdPb3KFJWjNGhoQUHjdJMwpTk8paFwCQj1QQDPtQGy0wHf1QBkIwBC3VsTcbQTBgyNBJBrs4oB+dfcmbYKs9xR953D5UABvGlBQTDpQARlQAF5X0EYULz5oNAAyX9ATBebw+X1wP1A-1AaFez3eVjBP3OVxuNyecKBcJhoCQWhuAF9QNB4OhoLd7gJMSCEXRvn8ATDqZ9aeCUMjrqjMTi8ajsTIefiOaRiLAOCjUelxEhXBybrlsMFxDIZajiqVwI5ASrUVV8igOfitIKaMtUgIAIzyDSgZrgADWUpEJpSxnN7kt1ttDtA6V8tnsGsqXh8VgCCoIzsMZrdoBjcatNrA9vE6RyeXcJQDUiD3kjKwt7vdCeaAFFYLBwLBxAA5cAQGAIZBoaAAD04MXIAGYcbBsNJegR0BmiAR63BEKhyCg663MOhRwRAoQiW2YkTMIu4KAAEwQWCgAAsoEaQA) ``` typescript // overload signatures 定義 function padding(all: number): object; function padding(topAndBottom: number, leftAndRight: number): object; function padding(top: number, right: number, bottom: number, left: number): object; // function implementation 實際執行的function function padding(a: number, b?: number, c?: number, d?: number) { if (b === undefined && c === undefined && d === undefined) { b = c = d = a; } else if (c === undefined && d === undefined) { c = a; d = b; } return { top: a, right: b, bottom: c, left: d }; } padding(1); // ok: all padding(1, 1); // ok: topAndBottom, leftAndRight padding(1, 1, 1, 1); // ok: top, right, bottom, left padding(1, 1, 1); // Error: No overload expects 3 arguments, but overloads do exist that expect either 2 or 4 ``` ## Pure js version ``` javascript function a() { console.log("aaaaa") } function b(f = a) { console.log('bbbbbb') f(); } function c() { console.log("cccc") } console.log('------default callback--------') b(); //prints bbbbbb aaaaa console.log('------overriding the callback--------') b(c); //prints bbbbbb cccc ``` ## in Vue ![image](https://hackmd.io/_uploads/HkjrFbRgA.png) function也編譯不過 ![image](https://hackmd.io/_uploads/Ski7YZRl0.png) vue編譯不過 ![image](https://hackmd.io/_uploads/Bk01FbAlA.png) // 結果會統一編譯 name2 in compasibled ![image](https://hackmd.io/_uploads/SyVV9bAlA.png) 同場加應 CSRF [連結](https://blog.techbridge.cc/2017/02/25/csrf-introduction/) about cookie [連結](https://github.com/aszx87410/blog/issues/17) 重載函式 [連結](https://medium.com/@a0988426059/typescript-%E5%87%BD%E6%95%B8%E9%87%8D%E8%BC%89-function-overloading-72c7df9c45a)