【问题标题】:How can I reference normal typescript module(A.ts) from ambient module(B.d.ts)?如何从环境模块(B.d.ts)引用普通打字稿模块(A.ts)?
【发布时间】:2016-03-29 21:02:35
【问题描述】:

最初我在环境模块中声明了所有内容。 后来我不得不将枚举提取到非环境模块,因为我需要枚举成员查找,而声明和 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 enums reference typescript ambient


    【解决方案1】:

    只要添加一行:

    import * as enums from "./enums";
    

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

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

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

    【讨论】:

    • 也许我错了,但你不必在界面中添加导出?。我删除这条消息祝你好运
    【解决方案2】:

    您可以添加以下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-02-20
      • 1970-01-01
      • 2021-10-16
      • 2023-03-29
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 2016-05-13
      相关资源
      最近更新 更多