最初我在环境模块中声明了所有内容。后来,我不得不将枚举提取到非环境模块,因为我需要枚举成员查找,使用declare和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
}
我做错了什么?我应该如何处理?
一旦添加行:
import * as enums from "./enums";
您将其转换为外部模块,因此要访问其内容,需要导入它,如下所示:
import * as amb from './ambient'
class Consumer
{
memberField: amb.TypeA;
}
作为旁注。不要使用名称空间或尝试将它们与模块混合使用(链接、链接)。
您可以添加以下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;
}