日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

慎用!!!不要在Typescript中使用Function類型

來源: 責編: 時間:2023-09-28 10:07:43 367觀看
導讀原文鏈接:https://www.totaltypescript.com/dont-use-function-keyword-in-typescript翻譯:一川在Typescript中不應該使用Function作為一個類型,因為它可以表示任何函數。通常,我們期望的是更具體的類型--例如指定參數的

原文鏈接:https://www.totaltypescript.com/dont-use-function-keyword-in-typescripthcy28資訊網——每日最新資訊28at.com

翻譯:一川hcy28資訊網——每日最新資訊28at.com

在Typescript中不應該使用Function作為一個類型,因為它可以表示任何函數。通常,我們期望的是更具體的類型--例如指定參數的數量或函數返回的內容。如果確實要表示可以接受任意數量的參數并返回任何類型的函數,請使用 (...args: any[]) => any。hcy28資訊網——每日最新資訊28at.com

1、完整的解釋

假設您正在創建一個匯總對象數組的函數。這是一個,取自Excalidraw代碼庫:hcy28資訊網——每日最新資訊28at.com

const sum = <T>(  array: readonly T[],  mapper: (item: T) => number): number =>  array.reduce(    (acc, item) => acc + mapper(item),    0  );

讓我們看一下類型定義。此函數包含:hcy28資訊網——每日最新資訊28at.com

  • 只讀數組:readonly T[]
  • 映射器函數:(item: T) => number

并返回 number類型。hcy28資訊網——每日最新資訊28at.com

在主體中,它調用array.reduce(func, 0)。這意味著在acchcy28資訊網——每日最新資訊28at.com

對于數組的每個成員,它通過將acc和mapper(item)進行相加,最終得到數組所有成員的總和。hcy28資訊網——每日最新資訊28at.com

2、什么可以用來作為函數聲明?

mapper函數是關鍵。我們來剝離一下來看看:hcy28資訊網——每日最新資訊28at.com

type Mapper<T> = (item: T) => number;

讓我們想象一個用例:hcy28資訊網——每日最新資訊28at.com

interface YouTubeVideo {  name: string;  views: number;} const youTubeVideos: YouTubeVideo[] = [  {    name: "My favorite cheese",    views: 100,  },  {    name: "My second favorite cheese (you won't believe it)",    views: 67,  },]; const mapper: Mapper<YouTubeVideo> = (video) => {  return video.views;}; const result = sum(youTubeVideos, mapper); // 167

3、關于什么是函數?

我看到很多初學者開發人員犯的一個大錯誤,聲明一個類似于 mapper和Function類型 的函數:hcy28資訊網——每日最新資訊28at.com

const sum = <T>(  array: readonly T[],  mapper: Function): number =>  array.reduce(    (acc, item) => acc + mapper(item),    0  );

這個關鍵字基本上代表“任何函數”。這意味著從技術上講可以 sum 接收任何函數。hcy28資訊網——每日最新資訊28at.com

當在 中使用 sum 時,我們失去了很多 (item: T) => number 提供的安全性:hcy28資訊網——每日最新資訊28at.com

const result = sum(youTubeVideos, (item) => { // Parameter 'item' implicitly has an 'any' type.  // We can return anything from here, not just  // a number!  return item.name;});

TypeScript 現在無法推斷應該是什么 item ,或者我們的mapper函數應該返回什么。hcy28資訊網——每日最新資訊28at.com

這里的教訓是“不要使用 Function ” - 總有一個更具體的選項可用。hcy28資訊網——每日最新資訊28at.com

4、表示“任何函數”

有時,期望在typescript中表示“任何函數”,為此,讓我們看一下 TypeScript 的一些內置類型Parameters 以及 ReturnType。hcy28資訊網——每日最新資訊28at.com

export type Parameters<  T extends (...args: any) => any> = T extends (...args: infer P) => any  ? P  : never; export type ReturnType<  T extends (...args: any) => any> = T extends (...args: any) => infer R ? R : any;

您會注意到這兩種實用程序類型使用相同的約束:(...args: any) => any 。hcy28資訊網——每日最新資訊28at.com

(...args: any)指定函數可以接受任意數量的參數,=> any 表示它可以返回任何內容。hcy28資訊網——每日最新資訊28at.com

5、表示沒有參數的函數

要表達一個沒有參數的函數(但返回任何內容),您需要使用() => any:hcy28資訊網——每日最新資訊28at.com

const wrapFuncWithNoArgs = (func: () => any) => {  try {    return func();  } catch (e) {}}; wrapFuncWithNoArgs((a: string) => {});> Argument of type '(a: string) => void' is not assignable to parameter of type '() => any'.> Target signature provides too few arguments. Expected 1 or more, but got 0.

6、總結

Function不應該用作表示函數類型。當您只想指定參數而不指定返回類型時,可以使用語法(a: string, b: number) => any。hcy28資訊網——每日最新資訊28at.com

記住,(...args: any) => any 可用于表示任何函數類型。hcy28資訊網——每日最新資訊28at.com

此處,mapper 表示從對象中提取數字的函數。該 sum 函數的強大之處在于您可以丟棄大多數此類聲明:hcy28資訊網——每日最新資訊28at.com

const youTubeVideos = [  { name: "My favorite cheese", views: 100 },  {    name: "My second favorite cheese (you won't believe it)",    views: 67,  },]; const result = sum(youTubeVideos, (video) => {  return video.views;}); // 167

事實上,我們已經舍棄了所有類型聲明,但 video仍舊被推斷為 { name: string; views: number } 。這是可能的,因為我們的函數定義的特殊性:(item: T) => number 。hcy28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-11839-0.html慎用!!!不要在Typescript中使用Function類型

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 水印藝術創造:逐步學習Python中的添加水印精華

下一篇: 實用!Python數據排序與排名:輕松找到最值與排名

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
欧美视频在线观看一区二区| 欧美中文字幕在线播放| 91久久久一线二线三线品牌| 艳妇臀荡乳欲伦亚洲一区| 亚洲少妇在线| 模特精品裸拍一区| 国产模特精品视频久久久久| 亚洲一区二区在线视频| 欧美理论在线| 亚洲香蕉成视频在线观看| 国产精品成人aaaaa网站| 极品尤物av久久免费看| 亚洲一区免费看| 国产女优一区| 国模吧视频一区| 91久久久久久久久| 亚洲免费综合| 蜜桃av一区二区在线观看| 国产精品www网站| 激情综合视频| 亚洲婷婷综合色高清在线| 久久久久久久综合日本| 欧美日韩在线播| 精品1区2区3区4区| 亚洲图片激情小说| 老司机久久99久久精品播放免费| 国产精品地址| 亚洲最新视频在线| 久久久久一区二区| 欧美日一区二区三区在线观看国产免| 国产亚洲一区二区三区在线播放| 亚洲另类在线视频| 久久久久欧美精品| 国产精品久久久久久久9999| 老司机精品福利视频| 国产精品va在线播放| 亚洲高清资源综合久久精品| 性欧美办公室18xxxxhd| 欧美日韩性视频在线| 在线观看欧美成人| 欧美一区二区三区四区在线观看| 欧美日韩国产片| 亚洲国产成人tv| 久久精品亚洲| 国产精品三级视频| 夜夜精品视频| 老色鬼久久亚洲一区二区| 久久人人97超碰国产公开结果| 亚洲电影免费观看高清| 欧美日本一道本在线视频| 中文成人激情娱乐网| 久久久噜噜噜久久中文字幕色伊伊| 国产精品日韩欧美一区二区三区| 亚洲国产精品传媒在线观看| 久久精品国产99国产精品| 国产日韩欧美| 久久久亚洲人| 久久福利精品| 国产精品99久久久久久久女警 | 久久久久五月天| 99在线精品观看| 欧美精品二区| 国产亚洲aⅴaaaaaa毛片| 欧美视频在线观看免费网址| 免费亚洲一区| 亚洲一区二区在线视频| 午夜免费日韩视频| 男女激情久久| 国产美女精品| 国产一区二区精品| 国产精品不卡在线| 欧美在线观看视频在线| 亚洲一级黄色| 国产亚洲精品久久飘花| 国内精品久久久久久久影视麻豆 | 在线观看三级视频欧美| 欧美日韩国产精品一区二区亚洲| 欧美主播一区二区三区美女 久久精品人| 日韩一区二区精品葵司在线| 亚洲日本无吗高清不卡| 香蕉av福利精品导航| 国产精品美女黄网| 亚洲欧美日韩在线播放| 国产精品一区二区三区久久| 亚洲一区二区视频在线观看| 欧美四级在线观看| 欧美伦理91i| 亚洲无人区一区| 国产精品日产欧美久久久久| 一区二区三区欧美亚洲| 国产精品国色综合久久| 亚洲免费视频网站| 国产欧美一区二区白浆黑人| 欧美在线视频免费观看| 好吊日精品视频| 免费日韩av电影| 亚洲精品一二| 国产精品久久婷婷六月丁香| 国产精品美女久久久久久久| 久久精品亚洲热| 亚洲视频免费在线| 性色av香蕉一区二区| 国产精品久久久999| 欧美一区二区三区四区在线 | 亚洲欧美网站| 韩国精品久久久999| 蜜桃伊人久久| av成人天堂| 国产精品自拍三区| 久久免费黄色| 日韩系列在线| 国产精品一级在线| 久久久中精品2020中文| 亚洲乱码视频| 国产精品视频免费观看| 久久天堂精品| 一本一道久久综合狠狠老精东影业 | 亚洲少妇一区| 韩国成人福利片在线播放| 欧美国产成人精品| 亚洲一二三区在线| 韩国一区二区三区美女美女秀| 欧美成人中文字幕在线| 亚洲线精品一区二区三区八戒| 国产丝袜美腿一区二区三区| 欧美成人午夜激情视频| 亚洲尤物视频在线| 在线观看日韩av| 国产精品国产三级国产aⅴ9色| 久久精品在线免费观看| 亚洲三级免费| 国产午夜精品麻豆| 欧美激情一区| 久久成人精品| 99国产精品99久久久久久| 国产亚洲一区二区三区在线观看 | 国内精品久久久久影院优| 欧美经典一区二区三区| 欧美一区二区在线| 亚洲裸体在线观看| 国产日产亚洲精品| 欧美日韩久久不卡| 久久琪琪电影院| 亚洲一区国产精品| 91久久久在线| 狠狠久久亚洲欧美| 国产精品激情电影| 欧美成人综合在线| 久久成人免费| 亚洲网址在线| 亚洲精选一区| 在线播放日韩专区| 国产欧美日韩视频在线观看 | 136国产福利精品导航网址应用 | 国产精品区二区三区日本| 欧美大学生性色视频| 久久精品91久久香蕉加勒比| 一区二区不卡在线视频 午夜欧美不卡在 | 久久手机免费观看| 亚洲欧美伊人| 一区二区三区视频观看| 亚洲国产精品一区二区久| 国产一区二区三区不卡在线观看| 欧美日韩一二区| 男女视频一区二区| 久久久久久久激情视频| 亚洲欧美日韩精品久久| av成人福利| 亚洲精品免费一二三区| 尤物精品在线| 国产一区二区三区在线免费观看| 国产精品对白刺激久久久| 欧美久久99| 欧美高清视频一区二区三区在线观看| 久久精品99国产精品| 午夜视频在线观看一区二区三区| 一区二区三区视频在线看| 亚洲靠逼com| 亚洲日本欧美| 亚洲精品国产欧美| 亚洲黄色成人| 亚洲国产精品久久久久秋霞蜜臀| 国产综合在线看| 国产亚洲一区二区三区在线观看| 国产精品自拍一区| 国产精品亚洲欧美| 国产精品午夜在线观看| 国产精品多人| 国产精品美女一区二区在线观看| 欧美日韩一区高清| 欧美日韩精品免费观看视一区二区 | 欧美亚洲一区二区在线| 亚洲欧美电影在线观看| 亚洲伊人观看| 亚洲自拍电影| 亚洲免费中文字幕| 亚洲欧美日本精品| 午夜视黄欧洲亚洲| 欧美亚洲专区| 久久国产精品一区二区| 久久久久一区| 免费不卡视频| 欧美国产精品专区| 欧美日韩国产丝袜另类|