大致代码如下
// * 请求响应参数(不包含 data)
export interface Result {
code: string;
message: string;
}
// * 请求响应参数(包含 data)
export interface ResultData<T = any> extends Result {
data: T;
}
// 封装的 post 请求
post<T>(url: string, params?: object, _object = {}): Promise<ResultData<T>> {
return this.service.post(url, params, _object);
}
// 具体请求
export const previewCode = (params: any) => {
return http.post(`/generate/preview`, params);
};
就根据我这种情况,在实际调用中,要如何不写成 anyscrip ,显然 const { data }:{data:any}
就不会报错了,但是规范的做法是怎样的呢?const { data }:{data:string}
又会报另一个错误:
TS2322: Type 'ResultData<unknown>' is not assignable to type '{ data: string; }'. Types of property 'data' are incompatible. Type 'unknown' is not assignable to type 'string'.
const preview = async (type: any) => {
const { data } = await previewCode(post);
previewContent.value = data;
// 波浪线,鼠标放这行会提示 TS2322: Type 'unknown' is not assignable to type 'string'.
};
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.