0

最初我在环境模块中声明了所有内容。后来我不得不将枚举提取到非环境模块,因为我需要枚举成员查找,而声明和 const 是不可能的。现在我的示例文件如下所示

//enums.ts
export enum Enum1{
    Value1, Value2
}

//ambient.d.ts
import * as enums from "./enums";
declare interface TypeA
{
  enumField: enums.Enum1;
  strField: string;
}

//consumer.ts
/// <reference path="ambient.d.ts"/>
class Consumer{
 memberField: TypeA; // <= Here compiler cannot find TypeA
}

我做错了什么,我应该如何继续?

4

2 回答 2

1

您可以添加以下内容import {TypeA} from "./ambient";

import {TypeA} from "./classes/ambient"; //change your path

//consumer.ts
/// <reference path="./classes/ambient.d.ts"/>

class Consumer{
 memberField: TypeA;
}

//ambient.d.ts
import * as enums from "./enums";

export declare interface TypeA
{
  enumField: enums.Enum1;
  strField: string;
}
于 2016-03-29T22:24:08.807 回答
1

只要您添加行:

import * as enums from "./enums";

您将其转换为外部模块,因此要访问其内容需要导入它,如下所示:

import * as amb from './ambient'
class Consumer
{
    memberField: amb.TypeA; 
}

作为旁注。不要使用命名空间或尝试将它们与模块(链接链接)混合。

于 2016-03-29T22:09:13.877 回答