Typescript 使用静态类属性时,类型Y上不存在属性X
当我想访问某个模块中的静态类属性时,我遇到了typescript错误问题 假设我想导出某个具有静态属性的类: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, {
// 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;
}
实际上,我已经实现了建议的方法,但我认为应该有另一种方法来实现所需的输出,而不使用接口。我想没有。。。