我正在使用安裝了Update 4和Typescript 1.3的Visual Studio 2013。如何在定義文件中引用Typescript枚舉
如果我有一個打字稿文件,像這樣:
MyEnums.ts:
export = MyEnumModule;
module MyEnumModule {
export enum AnEnum { RED, BLUE, GREEN }
}
而且我有一個定義文件,如下所示:
MyDefinitions.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文件工作(我試過只是要確定它似乎沒有工作)。
有誰知道如何在像這樣的定義文件中引用枚舉?
在此先感謝。
--update:
這裏是試圖下面(有我只是做了一個樣本項目)史蒂夫芬頓建議後,我看到的錯誤。
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;
}
}
文件夾結構:
應用
Defintions
內MyClass.ts MyDefinitions.ISomeInterface帶有懸停警告的紅色下劃線「無法找到名稱MyDefinitions」。
我有AMD爲項目設置
只要您使用Visual Studio 2013和d.ts是在同一個項目作爲您的.ts文件,你不需要包含文件本身的任何東西。確保它們在同一模塊中,儘管首先作爲測試以確保它可以正常工作 – John 2014-11-21 18:45:52
謝謝,我爲AMD設置了Web應用程序項目的模塊系統。枚舉文件和定義文件位於不同的文件夾中。定義文件當前被用作公共點來保存文件在整個項目中使用的引用。我不認爲使用AMD的模塊名稱會起作用嗎? – Brandon 2014-11-21 18:55:48
我很久沒有使用AMD了,所以不記得它是如何進口這些日子,所以不知道。我知道用VS你不需要再包含'///引用',這很好。我會嘗試使用相同的模塊都得到它的工作,然後自己一開始就與AMD – John 2014-11-21 19:25:02