具有相同名称的打字稿类在不同文件中重复

Dim*_*kin 5 node.js typescript

我有一个用打字稿编写的项目(nodejs),我有两个文件定义了User类,没有一个被导出,尽管它们是隔离的,但我在这两个文件上都从打字稿编译器中得到了重复错误

examples/hello_world.ts(3,7): error TS2300: Duplicate identifier 'User'. 
examples/models/user.model.ts(2,7): error TS2300: Duplicate identifier 'User'.
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢

Ale*_*hov 7

由于与 Web 平台的兼容性,TypeScript 团队决定将没有显式导入和导出的脚本视为普通脚本:

相反,没有任何顶级导入或导出声明的文件被视为其内容在全局范围内可用的脚本(因此也适用于模块)。

https://www.typescriptlang.org/docs/handbook/modules.html#introduction

对于 Node.js 这样的环境来说,就不太方便了。TypeScript 存储库中存在与此相关的问题https://github.com/microsoft/TypeScript/issues/18232


Pal*_*leo 6

如何强制将源文件作为模块

如果您的源文件不包含任何顶级importexport,只需添加以下行:

export {};
Run Code Online (Sandbox Code Playgroud)

注意:关于此主题有一个建议,但是目前在第一阶段,我们必须等待。


原始答案:使用经典进出口

将ES6语法用于import和一起使用的模块export

// models/user.model.ts
export class User {
}

// hello_world.ts
import { User as UserModel } from "./models/user.model"
export class User {
}
Run Code Online (Sandbox Code Playgroud)

请参见文章中的“重命名导入和导出” 来自Mozilla的ES6 In Depth:Modules