我需要帮助来理解创建.d.ts文件的正确方法。
让我吃惊的是有些人使用这种语法:

// lib-a.d.ts
namespace My.Foo.Bar {
  interface IFoo {}
  interface IBar {}
}

VS
// lib-b.d.ts
declare namespace My.Foo.Bar {
  interface IFoo {}
  interface IBar {}
}

VS
// lib-c.d.ts
namespace My.Foo.Bar {
  export interface IFoo {}
  export interface IBar {}
}

VS
// lib-d.d.ts
declare namespace My.Foo.Bar {
  export interface IFoo {}
  export interface IBar {}
}

VS
// lib-e.d.ts
declare module My.Foo.Bar {
  export interface IFoo {}
  export interface IBar {}
}

哪一个是正确的?声明用于什么?出口的用途是什么?何时使用命名空间与模块?

最佳答案

正确的方法是:

declare namespace NS {
    interface InterfaceTest {
        myProp: string;
    }

    class Test implements InterfaceTest {
        myProp: string;
        myFunction(): string;
    }
}

您总是可以通过编写一些.ts文件并使用--declaration选项(tsc test.ts --declaration)编译来检查正确的签名。这将生成一个输入正确的d.ts文件。
例如,上述声明文件是从以下代码生成的:
namespace NS {
    export interface InterfaceTest {
        myProp: string;
    }

    export class Test implements InterfaceTest {
        public myProp: string = 'yay';

        public myFunction() {
            return this.myProp;
        }
    }

    class PrivateTest implements InterfaceTest {
        public myPrivateProp: string = 'yay';

        public myPrivateFunction() {
            return this.myProp;
        }
    }
}

07-24 18:05
查看更多