ts基礎總結

ts有什么用

類型檢查, 擁抱es6,支持部分的esNext草案,直接編譯到原生js、引入新的語法糖

為什么用ts

TypeScript的設計目的應該是解決JavaScript的“痛點”:弱類型和沒有命名空間,導致很難模塊化,不適合開發大型程序。另外它還提供了一些語法糖來幫助大家更方便地實踐面向對象的編程。

typescript不僅可以約束我們的編碼習慣,還能起到注釋的作用,當我們看到一函數后我們立馬就能知道這個函數的用法,需要傳什么值,返回值是什么類型一目了然,對大型項目的維護性有很大的提升。

編譯報錯, 會生成編譯結果么?

答案是肯定的,當然可以在tsconfig.json的配置, noEmitONError

tsconfig.json的文件配置

還沒搞定

基礎總結

數據類型
  • boolean 、number、string、null、 undefined、 Symbol
  • undefined 和null 類型的數據只能被賦值undefined 和null, 但是這個類型是所有類型的子類型
  • void 空類型
    // undefined和null是所有類型子類型,都可以賦值let num: Symbol = undefined;sslet num: number = undefined;// undefined類型, 只能給undefinedlet u: undefined = undefined; let n: null = null;
復制代碼
  • any和類型推斷
   // 在ts中,變量在聲明的時候,如果沒有定義其類型,會被識成默認類型 let str;str = 'I am strgting';str = 1024;// 未定義類型,直接賦值let num= 124; // 等同于 let num:number = 124, 在后面代碼如果賦予num一個string會被報錯復制代碼
多個可能屬性
    //只能訪問可能屬性的共有屬性function getLength(param: string| number) {return param.length;}// 會報錯, 因為 length不是 sting和number類型的共有屬性// 技巧--》 使用類型別名type possibleType = string | number;function getLength(param: possibleType) {return param.length;}
復制代碼
接口的概念
  • 在ts中,interface包括對行為的抽象,由類去實現(implements)
  • 也包括對對象輪廓的描述
對象interface -》動態屬性

必選參數和可選參數的類型是動態屬性類型的子集,所有在動態屬性類型設置的時候要設置上所有類型

     interface userinfo {"memberId": number,"uName": string,"employeeId": string,"datetime": string,"platformList"?: Array<platform>,[propName: string]: string | number | Array<platform> | undefined}
復制代碼
只讀屬性的約束力

注意點: 只讀屬性的約束力在于第一次給對象賦值的時候,而不是給屬性賦值的時候 readonly和 const的區別: const是變量, readonly是屬性

接口-》抽象方法的實現
    export interface ISRequest {fetch(url: string, arg?: Object, callback?: Function): Promise<Object>;}export class SafeRequest implements ISRequest {public async fetch(url: string, arg, callback?: Function): Promise<Object> {return new Promise((resolve, reject) => {})}
復制代碼
用接口表示數組
    interface NumberArray {[index: any]: number}let numArr: NumberArray = [1, 2, 3]
復制代碼
函數的類型
  • 可選參數, 必須在必選參數后面
  • 參數默認值
    function buildName(firstName: string, lastName?: string) {}
復制代碼
  • 添加默認值的參數識別為可選參數
  • 剩余參數
類型斷言
   // <類型>值//  值 as 類型
復制代碼
疑惑--》 聲明文件

當使用第三方庫時,我們需要引用它的聲明文件,才能獲得對應的代碼補全、接口提示等功能。

聲明文件在哪里?
  • 與npm包綁定在一起
  • npm包的維護者并沒有提供聲明文件, 只能由其他人將聲明文件發布到@types里面
  • 自己寫個聲明文件
npm包的聲明文件 和全局變量的聲明文件

在 npm 包的聲明文件中,使用 declare 不再會聲明一個全局變量,而只會在當前文件中聲明一個局部變量。只有在聲明文件中使用 export 導出,然后在使用方 import 導入后,才會應用到這些類型聲明。 ######declare global 使用 declare global 可以在 npm 包或者 UMD 庫中擴展全局變量的類型

內置對象

內置對象查詢--》點擊
ESMAScript提供了Boolean、Error、Date、RegExp

    interface obj = {param: Functionparam: Promise}
復制代碼
枚舉--》 數據的雙向映射
    enum companyList= {1: 'aaa', 2: 'bbb'}var companyList = {1: 'aaa',2: 'bbb',aaa: 1,bbb: 2}
復制代碼
Vue in Typescript
三大利器
  • vue-component-class
    • 方法可以直接聲明為類成員方法。
    • 可以將計算屬性聲明為類屬性訪問器。
    • 默認data被當作類屬性
    • data , render 和vue的生命周期的鉤子直接是類成員的方法,保留這些命名,不要沖突
    • 對于其他的配置項,例如prop、componets等傳遞給裝飾器函數
    import Vue from 'vue';import Component from 'vue-componet-class';Component.resgisterHooks(['beforeRouteEnter'])@Componnet({props: {},components: {}})export default class App extends Vue {// aa = '';// 類型推斷aa是個string, 后面aa只能賦值aa類型// 所以最好使用先聲明后//  datapublic tableModelItems: Array<any>;constructor() {super();this.tableModelItems = [];}// computedpublic get filterTableData() {return this.tableData.filter((i: any) => i.refundStatus === 0).length// 方法// 聲明周期// 此時需要路由函數的生命周期鉤子咋辦beforeRouteEnterf() {next() // 一定要寫,否則玩不下去,為什么?}}}
復制代碼

- vue-property-decorator(依賴vue-component-class提供了更多了裝飾器,代碼更加顯示 )- @Emit- @Inject- @Prop- @Provide- @Watch
- vuex-class(連接了vue和vuex)```js復制代碼

還沒搞定的bug

錯誤--》 類型報錯

添加script的類型

    <script lang="ts"></script><!--否則下面的類型報錯-->
復制代碼
錯誤之--》Vue中掛載propoty出錯(如果還是爆紅,重啟ide)

聲明再掛載

<!--inject-->import _Vue from 'vue'import moment from "moment";export default {install(Vue: typeof _Vue, options: any) {Vue.prototype.$moment = moment;Vue.prototype.$log = () => {console.log(new Date())}}}
<!--types-->import Vue from 'vue'declare module 'vue/types/vue' {interface Vue {$moment: Function$log: Function}}
復制代碼
ts中不能識別.vue文件

TypeScript 默認只識別 .ts 文件,不識別 .vue 文件, 乖乖的寫 import Component from 'components/component.vue'

vuex-class的Emit傳參數給父組件報錯
    @emit("reset")reset(role, this.formData){}<!--此時報錯-->復制代碼

錯誤--> 可選參數爆紅

參考鏈接

  • vue+ts快速上手

  • ts通俗易懂,比較清晰的文檔

  • ts的官網

  • 尤大大對于ts+vue的看法

  • 螞蟻金服的ts實踐

轉載于:https://juejin.im/post/5cbdeec85188250aa922d52b

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536519.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536519.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536519.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CentOS7啟用SELinux和Firewall修改ssh端口號

基本信息 CentOS :CentOS Linux release 7.6.1810 (Core)SELinux:enforcedFirewall:enforcing生成ssh密鑰對 生成密鑰對 ssh-keygen -t rsa -b 2048 #默認存放的位置是/home/user/.ssh&#xff0c;使用的是公鑰id_rsa.pub從服務器中將私鑰復制到本機或者使用本地生成的密鑰對&a…

華為智能手環智能手表軟件測試,一塊智能手表的測試之旅,揭秘華為運動健康科學實驗室...

隨著消費者對健康生活的日益關注&#xff0c;隨之而來的是智能可穿戴設備的蓬勃發展。一個手環&#xff0c;一個智能手表&#xff0c;都可以為消費者提供諸如心率&#xff0c;步數相關的數據統計。而更進階的設備&#xff0c;則能為用戶提供系統的運動解決方案以及監控人體健康…

Flutter 使用動畫播放一組圖片

請支持原文&#xff1a;tryenough.com/images-anim… 效果如下圖&#xff1a; 代碼 import package:flutter/material.dart; import package:sprintf/sprintf.dart; //這個是一個拼接字符串的flutter庫&#xff0c;主要是為了使用方便&#xff0c;你可以選擇不使用&#xff0c…

軟件測試都有哪些證書,軟件測試都有哪些證書呀?有用嗎?

OYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學習論壇 www.oywp.netOYWP學…

超低頻測試信號產生電路軟件流程圖,一種0_20Hz超低頻信號發生器的設計與實現...

。。第22卷第4期增刊           儀 器 儀 表 學 報             2001年8月一種0&#xff5e;20Hz超低頻信號發生器的設計與實現馬彥恒 郭 利 于久恩 (軍械工程學院 石家莊 050003)摘要 本文介紹了一種采用了主—從式雙CPU結構,頻率和幅度都…

datastage 使用小結

轉載于:https://www.cnblogs.com/Guhan-xue/p/10758663.html

Teams 的邏輯架構與語音解決方案 - Official Posters Download

意外收獲了前幾天&#xff08;0420&#xff09;剛剛更新出來的Teams架構海報&#xff0c;分享給大家下載 Microsoft Teams IT architecture and telephony solutions postershttps://docs.microsoft.com/en-us/microsoftteams/teams-architecture-solutions-posters 接下來跟大…

ug不能自動啟動服務器,沒有足夠的權限啟動系統服務解決方法

沒有足夠的權限啟動系統服務解決方法UG的安裝要注意兩個問題&#xff0c;一個是安裝路徑不能有中文(包括ug文件存儲路徑也不能含有中文),二是許可證的安裝&#xff0c;win7裝ug問題多數出在“許可證”的安裝過程&#xff0c;你的那個報警是&#xff1a;就是說你把UGII_TMP_DIR設…

css直接子元素怎么用,CSS 子元素選擇器使用實例

與后代選擇器相比&#xff0c;子元素選擇器只能選擇作為某元素子元素的元素。子元素選擇器使用大于號">"做為連接符。如果您不希望選擇任意的后代元素&#xff0c;而是希望縮小范圍&#xff0c;只選擇某個元素的子元素&#xff0c;請使用子元素選擇器子元素選擇器…

C# Collection was modified;enumeration operation may not execute

一、問題描述 在做 數組、列表、集合遍歷時&#xff0c;可能我們會遇見這個問題。Collection was modified;enumeration operation may not execute &#xff0c;翻譯的中文意思&#xff1a;集合已修改&#xff1b;枚舉操作可能無法執行。 二、解決方案 就是在遍歷時&#xff0…

xp系統安裝金蝶k3服務器配置,XP單機版安裝金蝶K3的13.1版本號,金蝶K3Wise安裝步驟,安裝成功...

要注意先安裝IIS。再安裝VS2008。我們會常常在控制面板里找不到“應用程序server”這個項目。我們須要依照以下的步驟來操作就會Ok。1.下載IIS6&#xff0c;放置到D盤根文件夾。2.在執行里輸入&#xff1a;c:\Windows\inf\sysoc.inf即打開找到 [Components]段。加入&#xff1a…

通過django 執行命令或者腳本

1、執行django命令 下文的project1為project名&#xff0c;app1為app名 在django project 下執行&#xff1a;python manage.py shell # 可以在Python console里執行Python命令或者包含django的命令 > from app1.models import User > user User.objects.get(name"…

服務器kvm切換器維修,KVM切換器常見問題

數據中心在使用kvm開關的過程中有時會遇到一些使用問題。如果他們不能及時解決問題&#xff0c;就會影響數據中心的有效管理。小編輯總結了一些常見的問題并給出了詳細的答案。我希望能幫助每一個人。經常問的問題和答案&#xff1a;i.用于初始連接的kvm轉換器&#xff0c;kvm開…

Zulip 2.0.3 發布,功能強大的群組聊天軟件

Zulip 2.0.3 發布了&#xff0c;Zulip 是一個強大的開源群組聊天軟件。 用 Python 編寫&#xff0c;使用 Django 框架&#xff0c;支持通過會話流的私人消息和群聊。Zulip 還支持快速搜索、拖放文件上傳、圖像預覽、組私人消息、可聽通知、錯過電子郵件消息提醒&#xff0c;桌面…

ifix怎么裝服務器系統上,ifix服務器和客戶端配置

ifix服務器和客戶端配置 內容精選換一換準備好服務端和客戶端&#xff0c;根據組網規劃完成物理服務器的物理組網。本文檔中以3臺客戶端和3臺TaiShan服務器作為服務端為例。本次部署流程中以3臺客戶端節點和3臺TaiShan 200 服務器(型號2280)作為存儲節點&#xff0c;網絡包含前…

接口測試工具Postman(轉)

接口測試工具Postman Postman是一款功能強大的HTTP調試與模擬插件&#xff0c;不僅可以調試簡單的CSS、HTML、腳本等網頁的基本信息&#xff0c;它還可以發送幾乎所有類型的HTTP請求。Postman適用于不同的操作系統&#xff0c;Mac、WindowsX32、Windows X64、Linux系統等。本篇…

洛谷 P1372 又是畢業季I

可能所有的數論題都是這樣玄學.... 題目鏈接&#xff1a;https://www.luogu.org/problemnew/show/P1372 這道題通過暴力的枚舉可以發現是不可做的&#xff08;當然我也不會做&#xff09; 然后就有了這樣一個思路&#xff1a; 這道題就是求&#xff1a;從1~n中取k個數&#xff…

查看游戲服務器ip地址網站,如何查看游戲服務器IP地址

如何盡量使網絡游戲避免卡機呢&#xff1f;高帶寬&#xff0c;短延時&#xff0c;丟包率這是大家都知道的&#xff0c;還有重要的一點大家容易忽視&#xff0c;卡機與選擇的游戲分區有著密切的聯系&#xff0c;選擇合適的游戲服務器(南北電信運營商之分)最為重要。1、先選擇一個…

SUN服務器清除所有報錯信息,SUN服務器可能遇到的問題總結.doc

SUN服務器可能遇到的問題總結(一)1) Q&#xff1a;現在遇到這樣一個問題&#xff0c;telnet一臺SUN機時報下面的錯誤&#xff1a; No utmpx entry. You must exec "login" from the lowest level "shell".我做了下面的處理后&#xff1a; cd /var/adm mv u…

在線圖表編輯工具 draw.io 10.6.5 版本發布

draw.io 10.6.5 版本已發布&#xff0c;draw.io 是一款在線圖表編輯工具, 可以用來編輯工作流、BPM、org charts、UML、ER圖、網絡拓樸圖等。 新版本更新內容如下&#xff1a; 修復 VSDX 導入的類型變體邏輯 &#xff08;style variation logic&#xff09; 同一天發布的 10.6.…