第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

理解 NodeJs 打字稿函數(shù)體

理解 NodeJs 打字稿函數(shù)體

冉冉說(shuō) 2023-04-01 15:56:56
我試圖了解以下代碼的作用export const extractSomeDto = ({    _id,    name,    status}: SomeDto): SomeDto =>transformAttributes<SomeDto>({    _id,    name,    status});函數(shù)調(diào)用是這樣的——extractSomeDto(JSON.parse(body))我可以弄清楚以下內(nèi)容-導(dǎo)出方法extractSomeDto供其他文件調(diào)用該方法將返回: SomeDto我有以下疑問(wèn) -extractSomeDto 的輸入是什么?是SomeDto還是_id, name, status?該方法extractSomeDto將調(diào)用另一個(gè)名為的方法transformAttributes,我可以看到_id, name, status作為參數(shù)傳遞,但我不明白這<SomeDto>部分
查看完整描述

2 回答

?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

讓我們分解一下:


export

    export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>

//  ^^^^^^

      transformAttributes<SomeDto>({ _id, name, status });

導(dǎo)出方法extractSomeDto供其他文件調(diào)用

你是對(duì)的,它將從當(dāng)前模塊導(dǎo)出。


小更正,這是一個(gè)功能,而不是一個(gè)方法。方法屬于對(duì)象——你總是稱它們?yōu)閟omething.someMethod(). 函數(shù)沒(méi)有與之關(guān)聯(lián)的對(duì)象,因此它們本質(zhì)上是“自由浮動(dòng)”的,您可以將它們稱為someFunction().


輸入?yún)?shù)

export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>

//                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    transformAttributes<SomeDto>({ _id, name, status });

此函數(shù)采用的參數(shù)是 類(lèi)型SomeDto,但是屬性_id、name和status將被解構(gòu)。手冊(cè)文檔顯示了一個(gè)變量聲明,但它也可以用于參數(shù)。


本質(zhì)上,它只是從輸入中獲取這三個(gè)屬性的值,并將它們分配給同名的變量。這比做input._id, input.name, 和更容易input.status。


返回類(lèi)型

export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>

//                                                              ^^^^^^^

    transformAttributes<SomeDto>({ _id, name, status });

該方法將返回: SomeDto

你又是對(duì)的——返回類(lèi)型SomeDto又是。(提醒它是一個(gè)函數(shù),而不是一個(gè)方法)。


因此,輸入和輸出是同一類(lèi)型的對(duì)象。


通用函數(shù)調(diào)用

export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>

    transformAttributes<SomeDto>({ _id, name, status });

//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

該函數(shù)將調(diào)用一個(gè)名為的通用函數(shù)transformAttributes。該函數(shù)的簽名必須類(lèi)似于通用類(lèi)型參數(shù)function <T>transformAttributes()在哪里。T在您的例子中,類(lèi)型參數(shù)是SomeDto. 函數(shù)的確切決定取決于實(shí)現(xiàn),盡管它是其中之一


參數(shù)類(lèi)型,例如,function <T>transformAttributes(input: T)

返回類(lèi)型,例如,function <T>transformAttributes(): T

輸入和返回類(lèi)型function <T>transformAttributes(input: T): T

輸入?yún)?shù)為transformAttributes()

export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>

    transformAttributes<SomeDto>({ _id, name, status });

//                               ^^^^^^^^^^^^^^^^^^^^^

這是對(duì)象屬性的簡(jiǎn)寫(xiě)語(yǔ)法。它相當(dāng)于{ _id: _id, name: name, status: status  }. 換句話說(shuō),它從這三個(gè)變量創(chuàng)建屬性,其中每個(gè)名稱是變量的名稱,值是變量的值。


transformAttributes和的返回值extractSomeDto

最后,快速提一下——因?yàn)榇a使用的是箭頭函數(shù),并且正文沒(méi)有包含在大括號(hào)中,{}所以隱式地返回值就是正文返回的任何值。這意味著返回調(diào)用時(shí)extractSomeDto的結(jié)果。transformAttributes<SomeDto>({ _id, name, status })


查看完整回答
反對(duì) 回復(fù) 2023-04-01
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

函數(shù)名稱:extractSomeDto


功能參數(shù):{_id,name,status}: SomeDtoan。這意味著該函數(shù)接受一個(gè) SomeDtoan 類(lèi)型的對(duì)象并將其解構(gòu)以提取以下字段:_id、名稱、狀態(tài)。


函數(shù)返回類(lèi)型:SomeDto


函數(shù)體:函數(shù)返回結(jié)果


transformAttributes<SomeDto>({

    _id,

    name,

    status

});

這是相同的功能,重寫(xiě)后更容易理解。


export const extractSomeDto = (inputObject: SomeDto): SomeDto => {

   const _id = inputObject._id;

   const name = inputObject.name;

   const status = inputObject.status;


   return transformAttributes<SomeDto>({_id, name, status});

}


查看完整回答
反對(duì) 回復(fù) 2023-04-01
  • 2 回答
  • 0 關(guān)注
  • 137 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)