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

Typescript 使用静态类属性时,类型Y上不存在属性X,typescript,Typescript,当我想访问某个模块中的静态类属性时,我遇到了typescript错误问题 假设我想导出某个具有静态属性的类: // MODULE 1 export class AppConfig { static readonly apiKey: string = process.env.API_KEY; } // MODULE 3 ... function createContext(app: App): object { return Object.assign(app.ctx, {

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

假设我想导出某个具有静态属性的类:

// MODULE 1
export class AppConfig {
  static readonly apiKey: string = process.env.API_KEY;
}
// MODULE 3
...    
function createContext(app: App): object {
  return Object.assign(app.ctx, {
    apiContext: app.ctx.config.apiKey
  });
}
...
在模块2中,我为某个对象创建了一个接口

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

interface AppContext {
  config: AppConfig;
  ...
}

export default class App {
 ...

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

 ...
}
在模块3中,我最后想访问属性:

// MODULE 1
export class AppConfig {
  static readonly apiKey: string = process.env.API_KEY;
}
// MODULE 3
...    
function createContext(app: App): object {
  return Object.assign(app.ctx, {
    apiContext: app.ctx.config.apiKey
  });
}
...
然后我得到TS错误:
“类型“AppConfig.”上不存在属性“apiKey”,这很奇怪,因为该属性无疑位于此类型上

无法通过类实例访问静态属性。应通过类标识符访问它,如下所示:

const key=AppConfig.apiKey;

请参见主要问题是config参数被声明为AppConfig的实例:

config: AppConfig;
但事实并非如此

我建议在声明此参数时考虑另一种方法。例如:

interface IApiKeyProvider {
    apiKey: string;
}

interface AppContext {
  config: IApiKeyProvider;
}

实际上,我已经实现了建议的方法,但我认为应该有另一种方法来实现所需的输出,而不使用接口。我想没有。。。