Búsqueda de sitios web

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

Artículos relacionados