Typescript多文件同一class名称报错

描述

  • 项目中有2个文件夹,分别为starlottery,里面都有index.ts,两个ts文件都有一个名为Hello的类,按理说不同文件有相同类声明应该没问题,可是为什么会报[ts] Duplicate identifier 'Hello'这个错啊,把其中一个Class名改了,就没问题了

tsconfig配置文件如下

{
    "compilerOptions": {
        "target": "es5",
        "module": "commonjs",
        "sourceMap": false,
        "outDir": "build"
    },
    "exclude": [
        "node_modules",
        "typings/main",
        "typings/main.d.ts",
        "tsd/phaser.comments.d.ts",
        "tsd/pixi.comments.d.ts"
    ]
}
回复
阅读 5.3k
2 个回答

默认情况下,当你在一个新的 TypeScript 文件中写下代码时,它处于全局命名空间中。要解决这个问题你应该在 TypeScript 文件的根级别位置含有 import 或者 export,它会在这个文件中创建一个本地的作用域。

a.ts

let a: String = '123'

b.ts

let b = a

可以访问。

但是如果在文件中包含import或者export就会创建一个本地的作用域

export let a: String = '123'

这样其他文件下就不能访问

声明变量没问题,问题在于类型定义,外部类型定义中定义了两个Hello,但是对于一个类的定义只能有一个,好比引用了两个不同版本的jq,最终只有一个全局变量$能代表其中一个版本

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Microsoft
子站问答
访问
宣传栏