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 })

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});
}
添加回答
舉報(bào)