oop - TypeScript separa la declaración y la implementación de la clase como los encabezados de C++ usando `.d.ts`
¿Es posible separar la declaración y la implementación de las clases de TypeScript dentro de un espacio de nombres de manera similar a cómo se hace en C++? Quiero que mis objetos de TypeScript estén separados de manera similar a cómo los archivos de encabezado de C++ se usan solo para la declaración y la lógica se implementa en un archivo separado. Mi objetivo al hacer esto es ofuscar la lógica de mi módulo y que solo se exponga la declaración cuando otros descarguen mi módulo.
Para ejecutar mi ejemplo hago lo siguiente usando el código de mi archivo de prueba directamente a continuación.
tsc
tsc Member.test.ts && node Member.test.js
Member.test.ts
import { MyNamspace} from "../dist/Member";
var member = new Made.Member();
member.say("Bam");
En Member.d.ts quiero declarar los métodos y propiedades de mi clase.
export declare namespace MyNamspace {
export class Member {
firstName: string;
constructor(firstName:string);
getFirstName(): string;
say(s: string): string;
}
}
Luego, en Member.ts quiero implementar esos métodos. Un problema inicial que estoy enfrentando es que este archivo no reconoce la propiedad firstName de la clase que declaré en Member.d.ts
namespace MyNamspace {
class Member {
constructor(firstName:string) {
this.firstName = firstName;
}
public getFirstName(): string {
return this.firstName;
}
public say(s: string): void {
console.log(s + '\n');
}
}
}