0

我在类主体中声明了两个私有的、静态的和只读的属性。在类方法中,我不是试图通过在类对象中使用索引表达式来获取属性,而是在const声明中使用解构赋值。

解构赋值没有问题,但如果我不尝试索引我的类来获取这些私有属性,TypeScript 会给我以下警告:

'PROGRESS_BAR_WIDTH' 已声明但从未使用过。

'PROGRESS_BAR_HEIGHT' 已声明但从未使用过。

我在 TypeScript GitHub 存储库中创建了一个问题,但还没有得到任何帮助。

注意:当这些属性不是私有(公共)时,这些警告会淡出。我在方法中使用这些私有静态(和只读)属性init,它不是静态的。

这是我的代码:

import {PICTURES} from './../data/pictures';
import {WAVES} from './../data/waves';
import {GlobalBounds} from './../constants/global-bounds';

const stuffs = [];

export class PreloaderContainer extends createjs.Container
{
    private static readonly PROGRESS_BAR_WIDTH:number = 183;

    private static readonly PROGRESS_BAR_HEIGHT:number = 6;

    private progressBar: createjs.Shape;

    private progressWrapper: createjs.Shape;

    public constructor ()
    {
        super();
        this.init();
    }

    private init () : void
    {
        const {PROGRESS_BAR_WIDTH, PROGRESS_BAR_HEIGHT} = PreloaderContainer;

        const progressWrapper = new createjs.Shape;
        const progressBar = new createjs.Shape;

        progressWrapper.graphics

            .setStrokeStyle(1)

            .beginStroke('#646464')

            .drawRect(0, 0, PROGRESS_BAR_WIDTH,
                            PROGRESS_BAR_HEIGHT);

        progressWrapper.x =
            progressBar.x = (GlobalBounds.WIDTH / 2) - (PROGRESS_BAR_WIDTH / 2);

        progressWrapper.y =
            progressBar.y = 300;

        progressBar.graphics

            .beginFill('#646464')

            .drawRect(0, 0, 20,
                            PROGRESS_BAR_HEIGHT);

        this.progressBar = progressBar;
        this.progressWrapper = progressWrapper;
        this.addChild(progressBar);
        this.addChild(progressWrapper);

        this.preload();
    }

    private preload () : void
    {
        let loadedFiles:number = 0;

        //const len:number = stuffs.length;
        const queue = new createjs.LoadQueue;

        queue.addEventListener('complete', function () : void
        {}, false);

        queue.addEventListener('fileload', function (evt) : void
        {
            ++loadedFiles;

            const item = evt.item;
            const id = (<any> stuffs.filter(obj => obj === item)[0]).id;
            const result = evt.result;

            (result instanceof Audio ?
                WAVES :
                PICTURES
            )[id] = result;
        }, false);

        queue.loadManifest(stuffs);
    }
}
4

1 回答 1

0

我还没有找到对此的解释。目前,我找到的适当解决方案是避免和成员的private访问修饰符,即让它们公开。PROGRESS_BAR_WIDTHPROGRESS_BAR_HEIGHT

于 2016-12-08T14:04:30.720 回答