2 回答

TA貢獻1836條經驗 獲得超3個贊
讓我們分解一下:
export
export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>
// ^^^^^^
transformAttributes<SomeDto>({ _id, name, status });
導出方法extractSomeDto供其他文件調用
你是對的,它將從當前模塊導出。
小更正,這是一個功能,而不是一個方法。方法屬于對象——你總是稱它們為something.someMethod(). 函數沒有與之關聯的對象,因此它們本質上是“自由浮動”的,您可以將它們稱為someFunction().
輸入參數
export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
transformAttributes<SomeDto>({ _id, name, status });
此函數采用的參數是 類型SomeDto,但是屬性_id、name和status將被解構。手冊文檔顯示了一個變量聲明,但它也可以用于參數。
本質上,它只是從輸入中獲取這三個屬性的值,并將它們分配給同名的變量。這比做input._id, input.name, 和更容易input.status。
返回類型
export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>
// ^^^^^^^
transformAttributes<SomeDto>({ _id, name, status });
該方法將返回: SomeDto
你又是對的——返回類型SomeDto又是。(提醒它是一個函數,而不是一個方法)。
因此,輸入和輸出是同一類型的對象。
通用函數調用
export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>
transformAttributes<SomeDto>({ _id, name, status });
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
該函數將調用一個名為的通用函數transformAttributes。該函數的簽名必須類似于通用類型參數function <T>transformAttributes()在哪里。T在您的例子中,類型參數是SomeDto. 函數的確切決定取決于實現,盡管它是其中之一
參數類型,例如,function <T>transformAttributes(input: T)
返回類型,例如,function <T>transformAttributes(): T
輸入和返回類型function <T>transformAttributes(input: T): T
輸入參數為transformAttributes()
export const extractSomeDto = ({ _id, name, status }: SomeDto): SomeDto =>
transformAttributes<SomeDto>({ _id, name, status });
// ^^^^^^^^^^^^^^^^^^^^^
這是對象屬性的簡寫語法。它相當于{ _id: _id, name: name, status: status }. 換句話說,它從這三個變量創建屬性,其中每個名稱是變量的名稱,值是變量的值。
transformAttributes和的返回值extractSomeDto
最后,快速提一下——因為代碼使用的是箭頭函數,并且正文沒有包含在大括號中,{}所以隱式地返回值就是正文返回的任何值。這意味著返回調用時extractSomeDto的結果。transformAttributes<SomeDto>({ _id, name, status })

TA貢獻1853條經驗 獲得超9個贊
函數名稱:extractSomeDto
功能參數:{_id,name,status}: SomeDtoan。這意味著該函數接受一個 SomeDtoan 類型的對象并將其解構以提取以下字段:_id、名稱、狀態。
函數返回類型:SomeDto
函數體:函數返回結果
transformAttributes<SomeDto>({
_id,
name,
status
});
這是相同的功能,重寫后更容易理解。
export const extractSomeDto = (inputObject: SomeDto): SomeDto => {
const _id = inputObject._id;
const name = inputObject.name;
const status = inputObject.status;
return transformAttributes<SomeDto>({_id, name, status});
}
添加回答
舉報