我想要这样的东西 - Api.drinks.info - >这是静态的并返回字符串。但是我有一个错误
module App {
export class Api {
public static drink: Drink;
}
class Drink {
static get base(): string { return '/api/drink'; }
public static get info(): string { return `${Drink.base}/info`; }
}}
我该如何解决或实施?谢谢。
更新
可能的解决方案之一
module Api {
export module Drink {
var base = '/api/drink';
export var info = `${base}/info`;
}
export module Admin {
var base = '/api/drink';
export var info = `${base}/info`;
}}
答案 0 :(得分:0)
Api.drink
不是Drink
,类(构造函数),而是info
;它是Drink
的实例,但却没有。尝试访问它的行尝试使用该实例,就像它是类一样。
您不导出Drink
,因此访问它的唯一方法就是迂回:
this.resource = this.dataAccessService.getResource(Api.drink.constructor.info);
...但最好导出Drink
并直接使用它:
this.resource = this.dataAccessService.getResource(Drink.info);
请注意,引用的代码永远不会为drink
实例赋值,因此您需要使用上述任何一种方法。
或者,您是否打算将Drink
(构造函数)公开为Api
的静态成员?如果是这样,你需要稍微改变一下,看看评论:
module App {
// Classes aren't hoisted, so this needs to be before Api
class Drink {
static get base(): string { return '/api/drink'; }
public static get info(): string { return `${Drink.base}/info`; }
}
export class Api {
// 1. It's a function
// 2. We're initializing it to Drink
// 3. Because it's a constructor function / class, we use an
// initial capital letter in its name
public static Drink: Function = Drink;
}
}
然后:
this.resource = this.dataAccessService.getResource(Api.Drink.info);