下面是我正在處理的專案中型別的抽象版本
// types.ts
interface Methods {
request<T>(params: RequestParams): Promise<T>;
}
// implementation.ts
public request: Methods["request"] = async <T>(params) => {
// ...
};
我假設我可以<T>像上面那樣訪問,但是一旦我添加它,params由于某種原因變得無型別/任何
uj5u.com熱心網友回復:
當您使用泛型型別撰寫賦值時,TypeScript 不會從變數型別推斷賦值的型別。它只是根據鴨子型別規則驗證分配值的型別 ( <T>(params: any): Promise<T>) 是否與變數型別 ( ) 兼容。<T>(params: RequestParams): Promise<T>
所以你不應該期望params被自動輸入,而是你應該自己輸入:
// types.ts
interface Methods {
request<T>(params: RequestParams): Promise<T>;
}
// implementation.ts
public request: Methods["request"] = async <T>(params: RequestParams) => {
// ...
};
TypeScript 游樂場鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/481039.html
標籤:打字稿
上一篇:打字稿有條件地使屬性成為可選
