首頁 > web前端 > js教程 > 分享TypeScript的一些小技巧

分享TypeScript的一些小技巧

零下一度
發布: 2018-05-17 14:16:21
原創
2613 人瀏覽過

在C++專案中編譯TypeScript(以下簡稱ts)

  編輯ts檔案的屬性,項目類型選擇「自訂生產工具」。

  命令列輸入tsc所在位置與編譯參數,我的是"C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.2\tsc" %(Identity) --outFile %(RelativeDir)/ %(FileName).js -t es5。有空格的UNC(通用命名慣例)需要用雙引號引起來。 %(Identity)是被編譯檔位置。

    --outFile是輸出參數,後面跟著輸出位置。

    -t(--target)是目標型別,我用ES5,還可以是"ES3" (default), "ES5", "ES6"/"ES2015", "ES2016", "ES2017""ESNext"。

  說明寫%(Identity)就可以,這個隨意。

  輸出寫$(FileName).js,這應該是判斷編譯必要性的。

ps:這是我研究的方法,我感覺還有更標準的。官方並沒有介紹如何在c++專案中怎麼編譯。

在ts中引用jquery的聲明

  jquery並沒有使用ts編寫,所以git上也找不到ts文件,好在vs對jquery提供了強大的支持,任意專案類型新建html文件,包含任意版本jquery的js文件,那麼你的智慧提示就自動支援$了。接下來滑鼠定位在$左或右按F12查看定義就會自動轉到index.d.ts文件,右鍵標籤選開啟所在目錄,就能找到這個文件,複製到自己的專案目錄。

  用三斜杠語法引用到當前ts文件///

  .d.ts文件是聲明文件,並不含有邏輯程式碼,只是結構而已。

如何為自己的ts文件產生聲明文件

  同前,tsc編譯程式可以產生聲明文件,只需要參數-d/--declaration及ts文件即可。

  例如:tsc -d main.ts

#用命令列編譯ts檔案?

  可以,只要你不嫌麻煩。 VS的開發者命令提示字元(Developer Command Prompt for VS 2017)可以直接使用tsc命令。你可以把它固定到「開始」畫面,提高開啟效率。

拿不到聲明如何解決

  declare var swal: (arg: any) => any;
登入後複製

  加入你有swal這樣一個函數並沒有提供ts聲明,這樣就可以自由使用了。當然,這是一個參數的掉用。

  ts裡HTMLElement.remove這個成員是不存在的,只能用它父物件的removeChild,這樣不是很方便。

  dom:HTMLElement;

  (<any>dom).remove();// 就这样勉强的转为any再调用remove吧。
登入後複製

不用為每個物件建立一個類別

  ts的class不支援內部聲明class。所以成員的型別聲明在class外面也不太適合。

  class foo{
    member:{mem1:number, mem2?:string};// 加问号表示可有可无  }
登入後複製

  這樣member就類似一個內部類別了。

事件的訂閱及this參數

  class bar{
    sub(){
      dom.onclick=function(){this};
    }
  }
登入後複製

  這樣function函數裡的this是dom物件。

  dom.onclick=()=>{this};

#  這個this表示的是類別bar的實例。

  那麼我想又要有dom這個對象,又要有bar的實例呢?

  我目前只能用閉包了:

  class bar{
    click(node:HTMLElement, ev:MouseEvent){
      this...
    }
    dom.onclick = (ev:MouseEvent)=>this.click(dom,ev);
  }
登入後複製

  dom用閉包傳進去,this還是你期待的this,畢竟click是bar的成員函數。

只讀屬性不用readonly

  如果你想修改,readonly對類別內部存取不太方便

  所以應該用Object.defineProperty,ts有更方便的set/get操作屬性。

  class baz{
    _attr:[];
    get attr(){
      return _attr;
    }
  }
登入後複製

  這樣attr就只能讀取了。若要使用屬性特性,需要將ts編譯器的目標選項(-t/--target)設定到es5或以上。

這篇文章會持續更新,只要是ts的相關技巧我都會更新,如果你也關注typescript技術,請關注我/收藏這篇文章。

btw:cnblogs不支援ts程式碼著色,用的JS程式碼著色。

以上是分享TypeScript的一些小技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板