将数组转换为接口数组

Convert Array to Interface Array

在 Angular 12 应用程序上,我有以下环境:

export const environment = {
  production: false,
  applications: [
    { name: "Api", url: "https://localhost:5001" },
    { name: "Bot", url: "https://localhost:5003"}
  ],
}

然后我创建了一个 Application 接口和 EnvironmentService class:

export interface Application {
  name: string;
  url: string;
}

export class EnvironmentService {

  constructor() {}

  get production() : boolean { return environment.production; }

  get applications() : Application[] { return environment.applications };

}

但是我得到一个错误:

Type '{ name: string; url: string; }[]' is not assignable to type 'Application[]'.

如何将 environment.applications 转换为 Application[]

我个人也通过界面描述我的环境常量。这样我可以确定不同环境的常量将遵循相同的结构。

所以我会这样写:

export interface Application {
  name: string;
  url: string;
}

interface Environment {
  production: boolean;
  applications: Application[];
}

export const environment: Environment = {
  production: false,
  applications: [
    { name: "Api", url: "https://localhost:5001" },
    { name: "Bot", url: "https://localhost:5003"}
  ],
}

export class EnvironmentService {
  constructor() {}
  get production() : boolean { return environment.production; }
  get applications() : Application[] { return environment.applications };
}

通过硬输入并且没有隐含的“any”,IDE 可以为您提供所需的所有帮助。 省略类型的工作更少,并且在极少数情况下代码可能更具可读性,但也更容易出错。