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