最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript函數(shù)參數(shù)和返回類型的注解方式

 更新時(shí)間:2025年05月06日 14:32:49   作者:聒噪,  
這篇文章主要介紹了TypeScript函數(shù)參數(shù)和返回類型的注解方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

簡(jiǎn)單的類型定義

還是上次代碼

function getTotal(one: number, two: number) {
  return one + two;
}

const total = getTotal(1, 2);

這時(shí)候我們寫的代碼其實(shí)是有一個(gè)小坑的,就是我們并沒有定義getTotal的返回值類型,雖然TypeScript可以自己推斷出返回值是number類型。

但是如果這時(shí)候我們的代碼寫錯(cuò)了,比如寫程了下面這個(gè)樣子。

function getTotal(one: number, two: number) {
  return one + two + "";
}

const total = getTotal(1, 2);

這時(shí)候total的值就不是number類型了,但是不會(huì)報(bào)錯(cuò)。

有的小伙伴這時(shí)候可能會(huì)說,可以直接給total一個(gè)類型注解,比如寫成這個(gè)樣子。

const total: number = getTotal(1, 2);

這樣寫雖然可以讓編輯器報(bào)錯(cuò),但是這還不是很高明的算法,因?yàn)槟銢]有找到錯(cuò)誤的根本,這時(shí)錯(cuò)誤的根本是getTotal()函數(shù)的錯(cuò)誤,所以合適的做法是給函數(shù)的返回值加上類型注解,代碼如下:

function getTotal(one: number, two: number): number {
  return one + two;
}

const total = getTotal(1, 2);

這段代碼就比較嚴(yán)謹(jǐn)了,所以小伙伴們?cè)趯懘a時(shí),盡量讓自己的代碼更加嚴(yán)謹(jǐn)。

函數(shù)無返回值的定義方法

有時(shí)候函數(shù)是沒有返回值的,比如現(xiàn)在定義一個(gè)sayHello的函數(shù),這個(gè)函數(shù)只是簡(jiǎn)單的terminal打印,并沒有返回值。

function sayHello() {
  console.log("hello world");
}

這就是沒有返回值的函數(shù),我們就可以給他一個(gè)類型注解void,代表沒有任何返回值。

function sayHello(): void {
  console.log("hello world");
}

如果這樣定義后,你再加入任何返回值,程序都會(huì)報(bào)錯(cuò)。

never返回值類型

如果一個(gè)函數(shù)是永遠(yuǎn)也執(zhí)行不完的,就可以定義返回值為never,那什么樣的函數(shù)是永遠(yuǎn)也執(zhí)行不完的那?我們先來寫一個(gè)這樣的函數(shù)(比如執(zhí)行執(zhí)行的時(shí)候,拋出了異常,這時(shí)候就無法執(zhí)行完了)。

function errorFuntion(): never {
  throw new Error();
  console.log("Hello World");
}

還有一種是一直循環(huán),也是我們常說的死循環(huán),這樣也運(yùn)行不完,比如下面的代碼:

function forNever(): never {
  while (true) {}
  console.log("Hello JSPang");
}

函數(shù)參數(shù)為對(duì)象解構(gòu)時(shí)

這個(gè)坑有很多小伙伴掉下去過,就是當(dāng)一個(gè)函數(shù)的參數(shù)是對(duì)象時(shí),我們?nèi)绾味x參數(shù)對(duì)象的屬性類型。

我先寫個(gè)一般javaScript的寫法。

function add({ one, two }) {
  return one + two;
}

const total = add({ one: 1, two: 2 });

在瀏覽器中你會(huì)看到直接報(bào)錯(cuò)了,意思是total有可能會(huì)是任何類型,那我們要如何給這樣的參數(shù)加類型注解那?

最初你可能會(huì)這樣寫。

function add({ one: number, two: number }) {
  return one + two;
}

const total = add({ one: 1, two: 2 });

你在編輯器中會(huì)看到這種寫法是完全錯(cuò)誤的。那正確的寫法應(yīng)該是這樣的。

function add({ one, two }: { one: number, two: number }): number {
  return one + two;
}

const three = add({ one: 1, two: 2 });

如果參數(shù)是對(duì)象,并且里邊只有一個(gè)屬性時(shí),我們更容易寫錯(cuò)。

錯(cuò)誤代碼如下:

function getNumber({ one }: number) {
  return one;
}

const one = getNumber({ one: 1 });

看著好像沒什么問題,但實(shí)際這是有問題的,正確的代碼應(yīng)該時(shí)這樣的。

function getNumber({ one }: { one: number }): number {
  return one;
}

const one = getNumber({ one: 1 });

這樣寫才是正確的寫法,小伙伴們趕快動(dòng)手練習(xí)一下吧,剛開始學(xué)你可能會(huì)覺的很麻煩,但是你寫的時(shí)間長(zhǎng)了,你就會(huì)發(fā)現(xiàn)有規(guī)矩還是好的。人向往自由,缺鮮有人能屈駕自由。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • CesiumJS源碼雜談之從光到?Uniform

    CesiumJS源碼雜談之從光到?Uniform

    這篇文章主要為大家介紹了CesiumJS源碼雜談之從光到Uniform的使用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 鮮為人知的JavaScript5個(gè)JSON秘密功能

    鮮為人知的JavaScript5個(gè)JSON秘密功能

    這篇文章主要為大家介紹了鮮為人知的JavaScript中5個(gè)JSON秘密功能詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Underscore.js常用方法總結(jié)

    Underscore.js常用方法總結(jié)

    這篇文章主要介紹了Underscore.js常用方法總結(jié),本文講解了Underscore.js概述、在node.js下安裝、與集合有關(guān)的方法、與對(duì)象有關(guān)的方法、與函數(shù)相關(guān)的方法等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 自動(dòng)生成typescript類型聲明工具實(shí)現(xiàn)詳解

    自動(dòng)生成typescript類型聲明工具實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了自動(dòng)生成typescript類型聲明工具實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 基于Javascript實(shí)現(xiàn)頁(yè)面商品個(gè)數(shù)增減功能

    基于Javascript實(shí)現(xiàn)頁(yè)面商品個(gè)數(shù)增減功能

    本文給大家介紹基于Javascript實(shí)現(xiàn)頁(yè)面商品個(gè)數(shù)增減功能,通過點(diǎn)擊數(shù)量增減個(gè)數(shù),代碼分為前端頁(yè)面,后臺(tái)返回代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-07-07
  • TypeScript 基本數(shù)據(jù)類型實(shí)例詳解

    TypeScript 基本數(shù)據(jù)類型實(shí)例詳解

    這篇文章主要為大家介紹了TypeScript 基本數(shù)據(jù)類型實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • TypeScript快速上手—html中使用ts的兩種方法

    TypeScript快速上手—html中使用ts的兩種方法

    TypeScript使用命令行編譯器tsc或其他工具手動(dòng)執(zhí)行編譯,在html使用s時(shí)編譯為JavaScript,那么有沒有辦法簡(jiǎn)化過程,不編譯直接使用,本文介紹html中使用TypeScript的兩種方法
    2024-07-07
  • 數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊(duì)列詳解

    數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊(duì)列詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)TypeScript之棧和隊(duì)列詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 詳解Typescript?嚴(yán)格模式有多嚴(yán)格

    詳解Typescript?嚴(yán)格模式有多嚴(yán)格

    這篇文章主要為大家介紹了Typescript?嚴(yán)格模式有多嚴(yán)格實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • typescript類型體操及關(guān)鍵字使用示例詳解

    typescript類型體操及關(guān)鍵字使用示例詳解

    這篇文章主要為大家介紹了typescript類型體操及關(guān)鍵字使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11

最新評(píng)論

乐都县| 临猗县| 乌拉特中旗| 潮安县| 长武县| 丁青县| 泾阳县| 双流县| 宝丰县| 凤城市| 林甸县| 新民市| 介休市| 外汇| 琼中| 察哈| 株洲市| 耒阳市| 万全县| 晋州市| 富民县| 新郑市| 台东市| 合作市| 邹城市| 二手房| 宜黄县| 富蕴县| 县级市| 黄陵县| 明光市| 丹凤县| 霍邱县| 志丹县| 晋州市| 南通市| 申扎县| 财经| 镇赉县| 延安市| 富川|