Angular 8 / Typescript在调用数据时设置接口的属性

Posted

技术标签:

【中文标题】Angular 8 / Typescript在调用数据时设置接口的属性【英文标题】:Angular 8 / Typescript set Property of Interface when calling data 【发布时间】:2020-06-25 16:50:07 【问题描述】:

所以我用角度来称呼它

 savePat(obj: PatientData): Observable<IJsonSaveResult> 
    return this.http.post<IJsonSaveResult>(`$environment.serviceUrl/patients/addpatient`, obj);
  

我的 IJsonSaveResult 是

export interface IJsonSaveResult 
    success:    boolean;
    errors:     any[];
    resultSet: any;


resultSet 可以是任何东西,但我想输入类似于 .Net Generics 的类型

savePat(obj: PatientData): Observable<IJsonSaveResult(PatientData)> 
        return this.http.post<IJsonSaveResult>(`$environment.serviceUrl/patients/addpatient`, obj);
      

有什么想法吗?

【问题讨论】:

【参考方案1】:

如果我理解正确,你可以这样做:

export interface IJsonSaveResult<T> 
    success:    boolean;
    errors:     any[];
    resultSet: T[];

然后:

savePat(obj: PatientData): Observable<IJsonSaveResult<PatientData>> 
    return this.http.post<IJsonSaveResult<PatientData>>(`$environment.serviceUrl/patients/addpatient`, obj);

【讨论】:

【参考方案2】:

Typescript 泛型与 C# 泛型非常相似(不足为奇,因为 Microsoft 落后于 Typescript)。

您可以将resultSet 的类型声明为IJsonSaveResult 接口上的通用参数:

export interface IJsonSaveResult<TResultSet> 
  success: boolean;
  errors: any[];
  resultSet: TResultSet;

然后这样称呼它:

savePat(obj: PatientData): Observable<IJsonSaveResult<PatientData>> 
  const url = `$environment.serviceUrl/patients/addpatient`;
  return this.http.post<IJsonSaveResult<PatientData>>(url, obj);

【讨论】:

我尽可能避免使用 Angular Material。祝你好运!

以上是关于Angular 8 / Typescript在调用数据时设置接口的属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 5 中从 Typescript 调用 JavaScript 函数?

在 TypeScript Angular 指令中调用函数?

Typescript/Angular - 模态结果返回后调用单独的函数

Angular 8 Native Typescript 无崩溃,访问器简写

如何在 Typescript Angular 的另一个函数中调用一个函数

从 Angular 中的 JavaScript 文件调用 Typescript 函数