亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
  • 函數類型

    let log = function (message) {

    ????console.log(message);

    }

    let log2 = (message: string) => console.log(message);

    log2('hello');//參數只能轉入string

    typescript中,函數的寫法與JavaScript的完全一樣,與JavaScript最大的不同就是,typescript 可以給函數綁定類型。

    let log3 = (message: string, code?: number) => {

    ????console.log(message, code);

    }

    log3('hello', 3);

    typescript中,調用函數與JavaScript有個顯著的不同,就是typescript調用函數過程中,如果函數定義了兩個參數,調用時必須填寫兩個參數,并且類型要一致。typescript可以使用 ? 來表示參數的可選性,被用 ? 來指定的參數可以不填寫,函數里面的這個參數就被設定為undefined;也可以給參數設定默認值

    let log3 = (message: string, code: number = 0, data?: array) => {

    ????console.log(message, code);

    }

    log3('hello');

    注意:不管是可選參數,還是默認參數,都必須在參數列表的末尾,并且按照從后往前的順序進行排列

    查看全部
    1 采集 收起 來源:函數類型

    2021-07-27

  • 類型適配(類型斷言)Type Assertions

    let message : any; //初始化聲明了變量的類型,后續不會因為賦值而改變類型

    message = 'abc';

    message.endsWith('c'); //此時message類型是any類型而不是string類型

    如何改變變量初始化的類型?

    明確告訴typescript編譯器目前message真正的類型就是string,而通知typescript進行類型適配的過程就叫做?Type Assertions,中文叫類型斷言。
    兩種方法:

    1、let ddd =? (<string>message).endsWith('c');

    2、let aaa = (message as string).endsWith('c');

    注意!注意!注意!

    在使用類型適配?Type Assertions 的時候,一定要非常非常了解當前變量的類型,必須對自己的代碼有百分之百的信心!否則引發嚴重的錯誤!

    查看全部
  • 1、void:

    函數在沒有任何返回的情況下,函數就是一個 void 類型。

    funciton printResult() {

    ????console.log('lalalla');

    }

    也可以給函數指定類型:

    function printResult() : void {

    ????console.log('lalalla');

    }

    console.log('hello ', printResult()); //hello undefined

    在原生JavaScript中沒有void對應的表述的。

    2、undefined:

    function printResult() :?undefined?{

    ????console.log('lalalla');

    ????return;

    }

    使用過JavaScript的都知道,其實undefined也是一個值,是一個未經初始化的值。

    使用undefined的時候可以說某個東西是undefined,但使用void,表示這個東西不存在。

    兩者都表示沒有,undefined說的是變量沒有賦值沒有初始化,而void指定是變量本身就不存在。

    3、never:(一個函數永遠執行不完,這就是 never 的本質。實際開發過程中,never是用來控制邏輯流程的,大部分是用來處理異?;蛘咛幚韕romise)

    function throwError(message: string, errorCode: number) : never {

    ????throw { //拋出異常,強行結束

    ????????message,

    ????????errorCode

    ????}

    ????//永不會執行到這里,這個函數永遠不會執行完成,因此這個函數類型是 never

    }

    throwError('not found', 404);

    function whileLoop() : never {

    ????while(true) {

    ????????console.log('hhh');

    ????}

    }

    查看全部
  • 1、any 支持并且兼容所有類型()

    let randomVal: any = 666;

    randomVal = true;

    randomVal = 'sdfsa';

    randomVal = {};

    randomVal();

    randomVal.toUpperCase();

    這段代碼編寫沒有報錯,但編譯后就報錯了!

    2、unkonwn 不保證類型,但能保證類型安全

    在使用 unkonwn變量的時候,需要做一定程度的判斷或者類型轉換,當確定變量類型以后才能正常使用。

    let randomVal: unkonwn = 666;

    randomVal = true;

    randomVal = 'sdfsa';

    randomVal = {};

    if (typeof randomVal === 'function') {

    ????randomVal();

    }

    if (typeof randomVal === 'string') {

    ????randomVal.toUpperCase();

    }

    區別:

    使用any適合代碼的快速成型快速上線,但是會遺留一些明顯的安全隱患。

    使用unkonwn比any保險一點,可以保證類型的安全。

    查看全部
    0 采集 收起 來源:Any 與 unknow

    2021-07-27

  • 動態類型:any

    (重點問題:日常使用JavaScript的時候其實就是在使用一個any類型,那么,typescript目的是給JavaScript帶來強類型定義,為什么還要引用這種any類型動態支持各種類型呢?)

    使用any主要的目的是為了加速我們的開發過程,避免太冗長或者沒有必要或者約定俗成的類型定義。

    有人說使用typescript就不要使用any,使用any就失去了類型的意義了。

    在代碼中使用any,目的是為了快速開發、提升效率,避免過度設計。

    可以想一下,為什么JavaScript可以流行這么多年還經久不衰,這正是因為JavaScript的靈活性!

    而typescript所帶來的any則在極大程度上保留了JavaScript的它的靈活性,喜歡JavaScript是因它無與倫比的靈活性,但是痛恨的同樣也是它的靈活性。

    JavaScript這種野蠻生長猥瑣發育的靈活性可以讓團隊快速開發,但是給也會給團隊帶來不可閱讀性、不可維護性、不可拓展性等一系列的問題,而typescript則正是因為有any類型,才能在繼承JavaScript以后最大程度的保持語言靈活性的同時,還能帶來強類型語言才能形成的高可維護性。

    typescript中的any絕非無意義,它是通過多方論證得出的結果,所有要多用,并且用好any類型,使用any類型時一定要小心,合理使用它!

    查看全部
    1 采集 收起 來源:Any 與 unknow

    2021-07-27

  • 枚舉類型 enum (在默認情況下,枚舉類型的表現形式與c++類似,枚舉類型真正的類型數據是數字,也是從0開始計算)

    enum Color1 = {red, green, blue}

    let color1 = Color.blue; //2

    enum Color2 = {red = 5, green, blue}

    let color2 = Color2.blue; //7

    enum Color3 = { red = 3, green = 'greeen', blue = true}

    let color3 = Color3.blue; //true

    查看全部
    0 采集 收起 來源:枚舉類型 Enum

    2021-07-27

  • 聯合類型:一個變量可以同時支持兩個或多個不同的類型

    let union : string | number

    union = 2;

    union = 'sdfedf';

    union = true; 報錯

    let union2 : number | string | boolean | string[]

    function merge(n1: number | string, n2: number | string) {

    ????if (typeof n1 === 'string' || typeof n2 === 'string')?

    ????????return n1.toString() + n2.toString;

    ????else?

    ????????return n1 + n2;

    }

    let mergeNumber = merge(1,3); //4

    let mergeString = merge('2','4'); //24

    let mergeString = merge('hello', 2); //hello2

    查看全部
  • 數組 array

    let list1: number[] = [1,2,3,4]

    let list2: Array<number> = [1,2,3,4]

    let list3 = [1,2,3,4]

    let list4 = [1,'aa']

    let list5: any[] = [1,'aa',true]

    元組 tuple(固定長度、固定類型的數組,聲明元組的時候一定要指明類型,bug:使用 .push() 可以突破元組的界限,無限的給元組添加長度)

    let person1: [number, string] = [1, 'lulingkun']

    元組是一個特殊的數組,是固定長度固定類型的數組

    元組bug:person1[2] = 3; 報錯,但 person1.push(3) 不報錯可以通過編譯

    let person2 = [1, 'lulingkun']; 這不是元組類型,而是union array,聯合類型數組,本質上就是數組,既沒有固定長度也沒有固定類型,是混合number和string的類型

    查看全部
  • 給函數的參數設置取值類型

    function add (n1: number, n2: number) {

    ????return n1 + n2;

    }

    自動映射數據類型

    let isTrue = true;

    手動指定數據類型

    let total: number = 0;

    查看全部
  • string 字符串類型

    "hello"

    'hello'

    `hello`

    查看全部
  • 高級類型

    union 組合類型

    nullable 可空類型

    literal 預定義類型

    查看全部
  • typescript 的基本類型

    boolean、string、number、array、object、null、undefined

    tuple、enum、void、never、any

    查看全部
  • var 沒有 block 作用域,在 JavaScript 中可以無限次數聲明和使用,導致內存泄漏

    推薦使用:

    const 聲明常量

    let 聲明變量(解決 var 中帶來的作用域混論的問題)

    查看全部
    0 采集 收起 來源:變量聲明

    2021-07-27

  • 熱味兒

    查看全部
  • interface?IPoint?{

    ??drawPoint:?()?=>?void;

    ??getDistance:?(p:?IPoint)?=>?number;

    ??//?getter??setter?正常寫法

    ??//?getX:()=>number;

    ??//?setX:(value)=>void;

    ??//?getY:()=>number;

    ??//?setY:(value)=>void;

    ??//?懶人包寫法

    ??X:?number;

    ??Y:?number;

    }



    class?newPoint?implements?IPoint?{

    ??constructor(private?x:?number,?private?y:?number)?{

    ????console.log(`在?constructor?中,x?is?${x},y?is?${y}`);

    ??}

    ??drawPoint?=?()?=>?{

    ????console.log(`x?:?${this.x},?y?:?${this.y}`);

    ??}

    ??getDistance?=?(p:?IPoint)?=>?{

    ????return?Math.sqrt(Math.pow(p.X?-?this.x,?2)?+?Math.pow(p.Y?-?this.y,?2));

    ????//?return?0;

    ??}

    ??//?懶人包寫法

    ??get?X()?{

    ????return?this.x;

    ??}

    ??set?X(value:?number)?{

    ????this.x?=?value;

    ??}

    ??get?T()?{

    ????return?this.y;

    ??}

    ??set?Y(value:?number)?{

    ????this.y?=?value;

    ??}

    ??//?正常寫法

    ??//?setX?=(value:number)=>{

    ??//?if(value<0){

    ??//?throw?new?Error("value?不能小于0")

    ??//?}

    ??//?this.x=value;

    ??//?}

    ??//?setY?=(value:number)=>{

    ??//?if(value<0){

    ??//?throw?new?Error("value?不能小于0")

    ??//?}

    ??//?this.y=value;

    ??//?}

    ??//?getX=()=>{

    ??//?return?this.x;

    ??//?}

    ??//?getY=()=>{

    ??//?return?this.y;

    ??//?}

    }

    查看全部

舉報

0/150
提交
取消
課程須知
學習中需要用到這些工具: —visual studio code 代碼編輯器 —tsc TypeScript編譯器 —nodejs SDK 你需要有這些基礎: —可以使用原生JavaScript,有es6的基礎知識更佳
老師告訴你能學到什么?
1、學習TypeScript基礎知識 2、了解Typescriptg工作流程以及編譯原理 3、掌握TypeScript開發配置以及各種常用工具 4、掌握前端靜態類型思想 5、深入了解前端面對對象概念

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!