Возможно ли разделить объявление и реализацию классов TypeScript в пространстве имен в стиле, аналогичном тому, как в C ++? Я хочу, чтобы мои объекты TypeScript были отделены в стиле, аналогичном тому, как файлы заголовков C ++ используются только для объявления, а logi c реализован в отдельном файле. Моя цель в этом состоит в том, чтобы запутать логи моего модуля c и выставить объявление только тогда, когда другие загрузят мой модуль.
Чтобы запустить мой пример, я делаю следующее, используя код из моего тестового файла, расположенного ниже.
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");
В Member.d.ts
Я хочу объявить методы и свойства моего класса.
export declare namespace MyNamspace {
export class Member {
firstName: string;
constructor(firstName:string);
getFirstName(): string;
say(s: string): string;
}
}
Затем в Member.ts
Я хочу реализовать эти методы. Первоначальная проблема, с которой я сталкиваюсь, заключается в том, что этот файл не знает о свойстве firstName
из класса, который я объявил в 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');
}
}
}