如何在TypeScript中使用静态嵌套类导出类?

时间:2018-11-15 16:02:10

标签: javascript typescript

为了创建嵌套的静态类,我遵循this

class Album {
    label: Album.AlbumLabel;
}
namespace Album {
    export class AlbumLabel { }
}

但是,我也需要导出类Album。当我这样做

export class Album {
    label: Album.AlbumLabel;
}
namespace Album {
    export class AlbumLabel { }
}

我得到Individuals declarations in merged declaration 'Album' must be all exported or all local。如何解决?

1 个答案:

答案 0 :(得分:1)

第一种方法是按照编译器的指示进行操作,并同时导出两者:

export class Album {
    label: Album.AlbumLabel;
}

export namespace Album {
    export class AlbumLabel { }
}

选项二是一个摆变量,但是您有一个命名难题:

class Album {
    label: Album.AlbumLabel;
}

namespace Album {
    export class AlbumLabel { }
}

export const NameMe = Album;

第一种选择是更好的选择(我认为)。

进口

如果您想直接导入AlbumLabel,请不要嵌套。它已经在模块中,因此模块已导出AlbumAlbumLabel

如果保留嵌套,则必须使用以下任一方法:

import { Album } from './component.js';

const a = new Album.AlbumLabel();

或引入一个本地名称:

import { Album } from './component.js';
const AlbumLabel = Album.AlbumLabel;

const a = new AlbumLabel();

以下是允许import { AlbumLabel } from './album';

的示例
export class Album {
    label: AlbumLabel;
}

export class AlbumLabel { }