无法解析在同一模块中定义但在不同文件中定义的接口

时间:2015-12-08 09:55:12

标签: module namespaces typescript typescript1.7

代码

场/ base.ts

/// <reference path="../_all.ts" />

module SomeApp.fields {
  export interface IField {}
  export class Field implements IFields {}
}
字段中的

/ CharField.ts

/// <reference path="../_all.ts" />

module SomeApp.fields {

  import IField = SomeApp.fields.IField; 

  export interface ICharField extends IField {}
  export class Field implements IFields {}
}
在_all.ts中

/// <reference path="fields/base.ts" />
/// <reference path="fields/CharField.ts" />

但是这不起作用,我从CharField.ts文件中得到了这个错误:

  

错误:(7,39)TS2305:模块&#39; SomeApp.fields&#39;没有导出的成员   &#39; IField&#39;

那么我的代码中出了什么问题?

1 个答案:

答案 0 :(得分:0)

您的问题引发了一些问题:

  1. 你是如何编译的?
  2. Wy是_all.ts一个.ts文件,而不是.d.ts文件?
  3. 为什么要导入IField(取决于点“1”)?
  4. 这是一个有效的例子:

    .
    +-- tsconfig.json
    +-- references.d.ts
    +--  src
    |   +-- myInterface.ts
    |   +-- myClass.ts
    

    tsconfig.json:

    {
        "compilerOptions": {
            "module": "commonjs",
            "noImplicitAny": true,
            "removeComments": true,
            "preserveConstEnums": true,
            "out": "result.js",
            "sourceMap": true
        },
        "files": [
            "src/myClass.ts"
        ]
    }
    

    references.d.ts:

    /// <reference path="src/myInterface.ts" />
    /// <reference path="src/myClass.ts" />
    

    myInterface.ts:

    module MyNameSpace {
    
        export interface IMyInterface {
            // ...
        }
    }
    

    myClass.ts:

    /// <reference path="../references.d.ts" />
    
    module MyNameSpace {
        export class MyClass implements IMyInterface {
            // ...
        }
    }
    

    上面的示例有效,正是为什么您的示例不起作用可能是上面提到的1,2或3点中的任何一点。