我這樣定義LoginResultin 打字稿:
declare namespace API {
type LoginResult = {
status?: string;
type?: string;
currentAuthority?: string;
};
}
回應是另一個物體,所以我想將回應轉換為LoginResult,代碼如下所示:
export async function login(body: API.LoginParams, options?: { [key: string]: any }) {
let loginResult = await request<API.ApiResponse>('/manage/admin/user/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
let result = new API.LoginResult();
return loginResult;
}
但編譯器顯示:
Cannot use namespace 'API' as a value.ts(2708)
我應該怎么做才能解決它?并將原件轉換ApiResponse為LoginResult? 這是我的ApiResponse定義:
type ApiResponse = {
result?:any,
msg?: string,
resultCode?: string,
statusCode?: string
};
和完全不同ApiResponse,LoginResult我認為演員陣容不會起作用。
uj5u.com熱心網友回復:
您需要使用型別轉換。大多數 TypeScript 型別(不包括列舉之類的一些東西)不會轉換為運行時,因為它們用于編譯時型別檢查。因此,您無需實體化型別,只需將運行時變數(在您的情況下loginResult)轉換為您需要將其轉換為的型別。
return loginResult as API.LoginResult;
現在,就是說,由于request是通用的,你可以在那里做到這一點,而無需先將其轉換為API.ApiResponse.
return request<API.LoginResult>
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/442530.html
標籤:打字稿
上一篇:嵌套類的區域型別定義
