TypeScript : 語法及特性


當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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM