Búsqueda de sitios web

visual studio 2015 - TypeScript .d.ts sintaxis - exportar y declarar


Necesito ayuda para tratar de entender cuál es la manera correcta de crear un archivo .d.ts.

Lo que me sorprendió es que algunas personas usan esta sintaxis:

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

contra

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

contra

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

contra

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

contra

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

¿Cuál es correcto? ¿Para qué se usa declare? ¿Para qué se usa export? ¿Cuándo usar namespace versus module?

Respuesta #1

La manera correcta es:

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

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

Siempre puedes verificar la firma correcta escribiendo algún archivo .ts y compilándolo con la opción --declaration (tsc test.ts --declaration). Esto generará un archivo d.ts con los tipos correctos.

Por ejemplo, el archivo de declaración anterior fue generado a partir del siguiente código:

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;
        }
    }
}

Artículos relacionados