typescript - 使用静态类属性时,类型 Y 上不存在属性 X

标签 typescript

当我想访问某个模块中的静态类属性时,我遇到了 typescript 错误问题。

假设我想导出一些具有静态属性的类:

// MODULE 1
export class AppConfig {
  static readonly apiKey: string = process.env.API_KEY;
}

在模块 2 中,我为某个对象创建了一个接口(interface);

// MODULE 2
import { AppConfig } from "./appConfig";

interface AppContext {
  config: AppConfig;
  ...
}

export default class App {
 ...

 get ctx(): AppContext {
  return {
    config: AppConfig,
    ...
  };
 }

 ...
}

在模块 3 中,我终于想要访问该属性:

// MODULE 3
...    
function createContext(app: App): object {
  return Object.assign(app.ctx, {
    apiContext: app.ctx.config.apiKey
  });
}
...

然后我得到 TS 错误: “'AppConfig'类型上不存在属性'apiKey'。”,这很奇怪,因为该属性无疑是在这个类型上。

最佳答案

静态属性不能通过类实例访问。它应该通过这样的类标识符访问:

const key = AppConfig.apiKey;

参见 Static Properties

关于typescript - 使用静态类属性时,类型 Y 上不存在属性 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46790936/

相关文章:

javascript - 在非 onionified Cycle.js 应用程序中使用 cycle-onionify

typescript - 为什么 TypeScript 程序员更喜欢接口(interface)而不是类型

javascript - 无法读取未定义的 mysql 的属性 'typeCast'

javascript - ng-if/ng-hide 不会在 HTML 页面上实时更新

angular - 如何在 Angular2 中为日期添加天数?

angularjs - 在哪些情况下需要使用带有 Typescript 的 AngularJS 工厂?

reactjs - 如何解决 typescript Redux 连接错误 ActionCreatorsMapObject

javascript - 在另一个组件上使用 ngFor 的信息

jquery - 我们如何使用 typescript 创建自定义 jquery 插件?

javascript - 与作为输入传递给 Angular2 组件的对象进行交互