在TypeScript错误中包含命名空间?

时间:2017-08-04 15:58:52

标签: typescript backbone.js module namespaces

我们正在将我们的JS应用程序转换为TypeScript。当我们从服务器获取数据时,有时我们将其保留为普通的JSON对象,有时我们将其转换为Backbone模型。我们想在各地区分这些类型。理想情况下,我们会将这两种类型称为Backend.FooBackbone.Foo。当我们试图用一个替代另一个理想时,我们会得到一个错误,上面写着“Type'Backend.Foo'不能分配给'Backbone.Foo'。”和一个错误,说“类型'Foo'不能分配给'Foo'类型。存在两个具有此名称的不同类型,但它们是无关的。”

目前我们的设置如下:

// models/foo.ts
export default Foo extends Backbone.Model { ... }

// types/backend/foo.ts
export default interface Foo { ... }

// types/backend.ts
import Foo from "types/backend/foo"
export { Foo }

这允许我们执行以下操作:

import * as Backend from "types/backend"
import Foo from "models/foo"

let backboneFoo: Foo
let backendFoo: Backend.Foo

但如果我们补充:

backendFoo = backboneFoo
backboneFoo = backendFoo

我们得到错误:“类型'Foo'不能分配给'Foo'类型。存在两个具有此名称的不同类型,但它们是不相关的。”

我们还可以在models.ts中重新导出Backbone模型,以便我们可以执行import * as Backbone from "models",但这不会解决错误消息。

我们可以使用TypeScript命名空间获得所需的行为吗?

0 个答案:

没有答案