如何使用TypeScript引用命名空间B中的命名空间?

时间:2017-11-20 14:10:20

标签: typescript namespaces

src / models 文件夹中,我有一个很大的枚举列表,我把它放在命名空间 Enums 中。

Enums.ts

UPDATE `oc_product` INNER JOIN `my_temp_table` on `my_temp_table`.`product_id` = `oc_product`.`product_id` SET `oc_product`.`upc` = `my_temp_table`.`upc`

src / typings-custom 文件夹中,我有一些使用 Enums 的接口(等等)。

dto.d.ts

namespace Enums {

    const enum MethodType {
       Equal,
       NotEqual,
       ...
    }

}

我发现将我的Enums名称空间引用到DTO名称空间的唯一方法是使用/// <reference path="../models/Enums" /> namespace DTO { interface IRule { MethodType: Enums.MethodType } } 行。

它仍然是TypeScript v2.6的良好实践的一部分吗? 还有另外一种方法吗? (我尝试使用 import ,但它需要一个模块而不是命名空间)

谢谢!

2 个答案:

答案 0 :(得分:2)

管理代码的最佳方法是使用模块,而不是命名空间。要记住的一件事是it is best not to mix modules and namespaces in TypeScript

模块是具有importexport表达式的任何文件。

以下是Enums.ts模块:

export const enum MethodType {
    Equal,
    NotEqual,
 }

导入MethodType枚举以供实际使用的示例:

import { MethodType } from '../models/Enums';

interface IRule {
    MethodType: MethodType
}

您也可以导入该批次&#34;,但要注意依赖您不需要的东西:

import * as Enums from '../models/Enums';

interface IRule {
    MethodType: Enums.MethodType
}

理想情况下,您可以使用模块加载程序加载代码,但如果要继续捆绑,也可以使用工具将整批文件打包到单个文件中。

答案 1 :(得分:0)

export namespace Enums {
    const enum MethodType {
       Equal,
       NotEqual,
       ...
    }

}


/*-----*/

import * as Enums from './Enums'

记住,最好更改名称,因为Enums类似于限制词。

希望这会有所帮助。