TypeScript : 語法及特性

来源:https://www.cnblogs.com/cccy0/archive/2018/12/02/10052503.html
-Advertisement-
Play Games

當let聲明一個變數的時候它使用的詞法作用域或者是塊作用域。塊作用域指的就是他們包含的塊以外的不能訪問。 const聲明:是let聲明有相同的作用域規則,但是它被賦值後不能再被改變。類似於java的final TypeScript 可以用 `` 來聲明多行字元串,編譯之後js文件換行的地方會加上\n ...


當let聲明一個變數的時候它使用的詞法作用域或者是塊作用域。塊作用域指的就是他們包含的塊以外的不能訪問。

const聲明:是let聲明有相同的作用域規則,但是它被賦值後不能再被改變。類似於java的final

TypeScript 可以用 `` 來聲明多行字元串,編譯之後js文件換行的地方會加上\n

在` ` 裡面可以用 ${xxx變數/方法} 這種格式加入變數或方法,稱為字元串模板.感覺就像普通語言中的print函數一樣

TypeScript引入了類型的概念,如 var name: string = "haha"; 變數名name後面跟冒號後面加上變數類型,如果再把name賦一個
數字類型的值,那麼會報錯,但是生成的js文件依然沒有問題.聲明為any可以存放任何類型

方法之後也可以跟返回值的類型, 如 function test() : string { return:";" } 那麼只能返回string類型.

可以自定義數據類型,用 class關鍵字 ,如 class Person {name: string; age: number;} 就聲明瞭一個一個Person類,裡面有
string類型的name 和 number類型的age. 創建一個Person 對象用 var zhangsan:Person = new Person();
zhangsan.name = "";用這種方式賦值.

函數可選參數如:function test(a = "haha": string, b?: string) : void {} b後面加?表示可選參數,a是有預設值的參數,
可選參數必須聲明在必選參數後面.

可以用 function test(...args) 這種方法給函數傳不定長參數,args是一個數組.

ES6 支持 yield 需要在函數聲明之後加上* , 如 function* test(){ }, 裡面在返回處用 yield關鍵字,如果 yield後面有語句
如 yield Math.random(); 那麼可以創建一個對象,用 對象.next().value() 接收這個值.

析構表達式,如,一個函數返回一個對象 {name:"haha", age:18} ,那麼可以這樣接收 var {name, age} = 函數();
如果接收名和傳過來的名字不一樣,可以加上 var {name: namex, age} = 函數(); 這樣表示接收name參數的值存儲在namex變數裡面, 還可以嵌套表達式, 如果傳回來的對象,其中一個屬性又是一個對象,那麼可以這樣:var {name:{firstname:haha}} = 函數()
表示把返回的對象的name對象的firstname屬性取出來存到haha變數裡面.

析構表達式如果想要接收數組,那麼可以這樣: var [num1, num2, ...args] = array1; 表示 num1變數接收 array1[0] 的值,
num2 是 array1[1] ,剩下的全部放到args數組裡面去. 析構表達式也可以作為方法的參數.

箭頭表達式,類似於lambda表達式,是用js匿名函數實現的, 如 var sum = (num1=123, num2=321) => num1 + num2;執行sum(),就會
返回語句的執行結果.一般用他來解決js中this關鍵字的問題.看起來像把 function(){ } 替換為 () =>{ } ,註意如果匿名函數多行的話後面的語句要加在花括弧中.

for (var n of array1) { } 新的迴圈方式:for of 會忽略掉數組的屬性,並且迴圈取到的n是數組裡面的值.還可以迴圈字元串.

類的訪問控制符有三個 public private protected,預設是public

類的構造方法: constructor(public name:string){ } 聲明構造方法,同時聲明一個name屬性,在實例化的時候可以直接賦值.註意,
如果這樣的話,必須要在屬性上加訪問控制符.子類 extends繼承父類時,必須要在構造函數裡面調用父類構造函數,super();
獲取類的屬性且不確定變數名的時候用 類名[變數名] 這種方法 不能用 類名.屬性名

TypeScript也有泛型的概念,如: var array1: Array<Person> = []; 這個數組裡面只能存放Person類和它的子類.

介面的定義: interface Animal { eat(); } 可以作為方法的參數類型,也可以用類 implements 實現這個介面.

export 對外開放的東西,加了export修飾符,那麼別的文件就可以 import { xxx } from "./xxxx" 導入.

類型定義文件以 .d.ts結尾,如想用jquery庫,可以下載一個jquery的類型定義文件,就可以在ts文件中使用jquery.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.事件 瀏覽器客戶端上客戶觸發的行為都稱為事件 所有的事件都是天生自帶的,不需要我們去綁定,只需要我們去觸發。 通過 obj.事件名=function(){} 事件名:onmouseover 滑鼠懸浮 onmouseout 滑鼠移除 onmousedown滑鼠按下 onmouseup 滑鼠抬起 o ...
  • 元素的屬性 div.attributes 是所有標簽屬性構成的數據集合 div.classList 是所有class名構成的數組集合 在classList的原型鏈上看以看到add()和remove() 1.client系列 (1) clientWidth/clientHeight 是我們設置的寬和高 ...
  • @[toc] .val()實例方法的三種用法 1. $('xxx').val() : 獲取匹配的元素集合中第一個元素的當前value屬性值(property) 2. $('xxx').val(value) : 設置匹配的元素集合中每個元素的value屬性值(property) 3. $('xxx') ...
  • 在列表展示中,經常會使用卡片的內容展示形式,為了美觀,常常要求各卡片間的間隙是一致的。 卡片內容不一樣可能高度不等,但一般來說為了整體的一致性,會限制每個卡片的寬高都相等。 本文就基於寬高一致的多個卡片,在不同屏幕大小下,每行卡片數量可能有調整,考量如何實現等間隙的佈局。 點我預覽 放置一張張卡片項 ...
  • 希望能自己獨立的寫出這個小冊。在博客園的第一篇博文,還是寫關於技術方面的,但願語言組織好點。 自己也不算是初級小白了,畢竟學習前端知識很長一段時間了。兩個月前也嘗試寫過一些封裝,但對封裝質量並不滿意,後來讀了一本書,叫《JavaScript設計模式與開發實踐》,從中受益很多。作者是我們國內的騰訊前端 ...
  • 首先,回顧下上篇博文中 "js基礎梳理 究竟什麼是執行上下文棧(執行棧),執行上下文(可執行代碼)?" 的執行上下文的生命周期: 3.執行上下文的生命周期 3.1 創建階段 生成變數對象(Variable object, VO) 建立作用域鏈(Scope chain) 確定this指向 3.2 執行 ...
  • 1.關於數據綁定的問題 小程式更新data後只是把數據的值更新,不會刷新頁面,比如滑動的列表不會回到頂部,導致使用swiper有個小bug: 就是swiper的數據是後臺請求的,可通過切換tab標簽動態獲取,如果在切換之前swiper處在第三張或者更多(比將要點擊的tab下的swiper多),那切換 ...
  • 聲明 本系列文章內容全部梳理自以下幾個來源: 《JavaScript權威指南》 "MDN web docs" "Github:smyhvae/web" "Github:goddyZhao/Translation/JavaScript" 作為一個前端小白,入門跟著這幾個來源學習,感謝作者的分享,在其基 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...