簡體   English   中英

打字稿,訪問靜態成員

[英]typescript, access static member

我想要這樣的東西-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`;
}}

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM