<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          2020你應(yīng)該知道的TypeScript學(xué)習(xí)路線【函數(shù)類型】

          共 2872字,需瀏覽 6分鐘

           ·

          2021-01-04 02:02

          公眾號(hào):前端微服務(wù)
          GitHub:https://github.com/yongbolu
          作 ?者:子奕

          一、概述

          函數(shù)是JavaScript應(yīng)用程序的基礎(chǔ)。它幫助你實(shí)現(xiàn)抽象層,模擬類,信息隱藏和模塊。它在編程范式中為我們控制行為,抽象某些實(shí)現(xiàn)有著較大的幫助,因此 TypeScript 在 JavaScript 的基礎(chǔ)之上添加了一些額外的功能,輔助我們更好的使用函數(shù)。在TypeScript里,雖然已經(jīng)支持類,命名空間和模塊,但函數(shù)仍然是主要的定義 行為的地方。TypeScript為JavaScript函數(shù)添加了額外的功能,讓我們可以更容易地使用。今天小編就帶大家一起來學(xué)習(xí)下TypeScript的函數(shù)。如果大家覺得有幫助,記得給小編點(diǎn)個(gè)贊,如果想獲取更多干貨請(qǐng)關(guān)注前端微服務(wù)公眾號(hào),不定期為大家?guī)砀韶洝?/p>

          二、與JavaScript區(qū)別

          和JavaScript一樣,TypeScript函數(shù)可以創(chuàng)建有名字的函數(shù)和匿名函數(shù)。你可以隨意選擇適合應(yīng)用程序的方式,不論是定義一系列API函數(shù)還是只使用一次的函數(shù)。

          三、函數(shù)定義

          函數(shù)就是包裹在花括號(hào)中的代碼塊,前面使用了關(guān)鍵詞 function,語(yǔ)法格式如下所示:

          function function_name()
          {
          // 執(zhí)行代碼
          }

          四、調(diào)用函數(shù)

          函數(shù)只有通過調(diào)用才可以執(zhí)行函數(shù)內(nèi)的代碼。語(yǔ)法格式如下所示:

          function_name()

          五、使用案例

          5.1 基礎(chǔ)聲明

          // javascript
          function sum(x,y) {
          return x + y;
          }
          // typescript
          function sum(x: number, y: number): number {
          return x + y;
          }
          // 表達(dá)式
          const sum = function (x: number, y: number): number {
          return x + y;
          }

          不過由于 TypeScript 可以根據(jù) return 來推斷返回的類型,因此有時(shí)候返回類型 number 并不是一定要書寫的,不過為了給人閱讀時(shí)不增加不必要的開支,寫上明確的返回類型,是一種非常好的習(xí)慣。還有一點(diǎn)的是,雖然上述的代碼我們已經(jīng)為其添加了類型,不過這還不是一個(gè)很完整的類型書寫,但往往我們可以忽略它,如:

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

          const sum: Sum = function(x: number, y: number): number {
          return x + y;
          }

          以往我們寫 JavaScript 時(shí)調(diào)用 sum 函數(shù),也許我們什么都不傳,或者只傳一個(gè),但在 TypeScript 的世界中參數(shù)是必須真實(shí)存在的,我們調(diào)用時(shí)必須傳遞兩個(gè)參數(shù),因此我們可以使用 可選參數(shù)默認(rèn)參數(shù) 的方式來處理這個(gè)問題,如:

          function sum(x: number, y?: number): number {

          }
          function sum(x: number, y = 0): number {

          }

          5.2 TypeScript中arguments 處理

          function sum(...num: number[]): number {
          return num[0] + num[1];
          }

          5.3 TypeScript中this的使用

          let obj = {
          a: 1,
          b: function (){
          return () => {
          return this.a;
          }
          }
          }

          如果你沒有使用箭頭函數(shù),那么這里的 this.a 會(huì)得到一個(gè)錯(cuò)誤,因?yàn)榇藭r(shí)的 this 會(huì)被設(shè)置為一個(gè)全局的對(duì)象,瀏覽器中是 window ,Node.js里是 global。

          5.4 TypeScript重載功能

          function sync(x: number): number;
          function sync(x: { code: number, sig: string}): string;
          function sync(x: any): any {
          if (typeof x === "number") {
          return 0;
          }
          if (typeof x === "string") {
          return "0";
          }
          }

          sync(0);

          5.5 TypeScript中的e

          const divDom = document.getElementById("div");
          if (divDom) {
          const pay = function(current: number, discount: number): number{
          return current * (discount/100);
          }
          divDom.addEventListener("click", function(this: HTMLElement ,e: MouseEvent){
          pay(1000, 20);
          });
          }

          在這個(gè)例子中不僅用到了函數(shù)的類型,還有一個(gè)特別有意思的 this 的問題,請(qǐng)看下面代碼:

          divDom.addEventListener("click", function(this: HTMLElement ,e: MouseEvent){
          pay(1000, 20);
          });

          this: HTMLElement

          其實(shí)是非常明確的指明 addEventListener 的 handler 函數(shù)的 this 的問題,這個(gè) this 是指向了一個(gè) HTML 元素對(duì)象,舉個(gè)具體的例子,假設(shè)我們自己寫了一個(gè)UI組件,提供了一個(gè) addEventListener ,在處理 handler 函數(shù)時(shí),應(yīng)該將 this 指向這個(gè)這個(gè)UI組件實(shí)例,在 TypeScript 中寫法如下:

          class UI {
          public name: string;
          constructor(){
          this.name = "id";
          }
          public addEventListener(type: string, handler: (this: UI, e: string) => void) {
          ///
          handler.call(this, this.name);
          }
          }

          const ui = new UI();
          const onClick = ui.addEventListener("click", function(e: string){
          console.log(this.name);
          })

          六、關(guān)注我們

          點(diǎn)擊下方關(guān)注我???



          瀏覽 68
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本高清无码手机在线毛片 | av手机版 | 特黄AAAAAAAAA级毛片 | 肏屄视频免费在线观看 | 午夜精品视频在线 |