【发布时间】:2014-11-21 18:42:22
【问题描述】:
我正在使用安装了更新 4 和 Typescript 1.3 的 Visual Studio 2013。
如果我有一个打字稿文件,像这样:
MyEnums.ts:
export = MyEnumModule;
module MyEnumModule {
export enum AnEnum { RED, BLUE, GREEN }
}
我有一个像这样的定义文件:
我的定义.d.ts:
declare module MyDefinitions {
interface ISomeInterface {
aProperty: string;
aMethod: () => void;
aColor: MyEnumModule.AnEnum;
}
}
我基本上收到“找不到名称'MyEnumModule'”的错误
当从打字稿文件中引用时,这个枚举文件可以正常工作。例如:
SomeCode.ts:
export = MyCode;
import MyEnums = require('MyEnums');
module MyCode{
export class MyClass implements ISomeInterface {
public aColor: MyEnums.AnEnum = MyEnums.AnEnum.RED;
...and so on
我的理解是,添加 /// <reference ... 或导入都不适用于 .d.ts 文件(我只是想确定一下,但无论哪种方式似乎都不起作用)。
有谁知道如何在这样的定义文件中引用枚举?
提前致谢。
--更新:
这是我在尝试下面的史蒂夫芬顿建议后看到的错误(使用我刚刚制作的示例项目)。
MyDefinitions.ts:
import MyEnumModule = require('../App/MyEnums');
declare module MyDefinitions {
interface ISomeInterface {
aProperty: string;
aMethod: () => void;
aColor: MyEnumModule.AnEnum;
}
}
MyEnums.ts:
export = MyEnumModule;
module MyEnumModule {
export enum AnEnum { RED, BLUE, GREEN }
}
MyClass.ts:
export = MyCode;
import MyImport = require('MyEnums');
module MyCode {
export class MyClass implements MyDefinitions.ISomeInterface {
public aColor: MyImport.AnEnum = MyImport.AnEnum.RED;
constructor() { }
aProperty: string = "";
aMethod: () => void = null;
}
}
文件夹结构:
应用
定义
MyClass.ts 内部 MyDefinitions.ISomeInterface 带有红色下划线,并带有悬停警告“找不到名称 MyDefinitions”。
我为该项目设置了 AMD
【问题讨论】:
-
只要您使用的是 Visual Studio 2013 并且 d.ts 与您的 .ts 文件在同一个项目中,您就不需要在文件本身中包含任何内容。确保它们在同一个模块中,但首先作为测试以确保其正常工作
-
谢谢,我已经为 AMD 设置了 Web 应用程序项目的模块系统。枚举文件和定义文件位于不同的文件夹中。定义文件目前被用作保存整个项目中文件使用的引用的公共点。我认为使用 AMD 时模块名称不重要?
-
我很久没有使用 AMD 所以不记得这些天它是如何导入的所以不确定。我确实知道使用 VS,您不再需要包含
/// references,这很好。我会尝试使用相同的模块来让它工作,然后担心让它与 AMD 一起工作
标签: visual-studio-2013 enums requirejs typescript amd