Javascript 如何在TypeScript中导出带有静态嵌套类的类?

Javascript 如何在TypeScript中导出带有静态嵌套类的类?,javascript,typescript,Javascript,Typescript,为了创建嵌套的静态类,我遵循 但是,我也需要导出类相册。当我这样做的时候 export class Album { label: Album.AlbumLabel; } namespace Album { export class AlbumLabel { } } 合并声明“相册”中的个人声明必须全部导出或全部本地。如何修复它?选项一是按照编译器的指示执行,并同时导出: export class Album { label: Album.AlbumLabel; } e

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

但是,我也需要导出类相册。当我这样做的时候

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

合并声明“相册”中的个人声明必须全部导出或全部本地。如何修复它?

选项一是按照编译器的指示执行,并同时导出:

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
,请不要嵌套它。它已经在模块中,因此让模块导出
相册
相册标签

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

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

const a = new Album.AlbumLabel();
或引入本地名称:

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

const a = new AlbumLabel();
下面的示例允许从“/album”导入{AlbumLabel}

export class Album {
    label: AlbumLabel;
}

export class AlbumLabel { }

导出命名空间相册{…}
?@jcalz您的意思是,我不需要做
导出类相册
,我只需要做
导出命名空间相册
?导出两者。这就是“声明必须全部导出或全部本地”的意思。要么两个都导出,要么都不导出。答案太长,无法发表评论,因此我更新了答案。非常感谢您的解释。
export class Album {
    label: AlbumLabel;
}

export class AlbumLabel { }