Я пытаюсь изменить прототип объекта внутри другого модуля (как показано на рисунке here). Тем не менее, увеличение модуля, похоже, работает только при добавлении объекта, объявленного в требуемом файле в том же модуле, а не в другом модуле.Расширение модуля TypeScript для нескольких модулей
К примеру, у меня есть класс, TestClass
:
// some-module/TestClass.ts
export class TestClass {
someValue: string = "hi";
someFunc(): number {
return 5;
}
}
И в том же модуле, у меня есть это:
// some-module/index.ts
import { TestClass } from "./TestClass";
declare module "./TestClass" {
interface TestClass {
doSomethingElse(): void;
}
}
TestClass.prototype.doSomethingElse = function(): void {
console.log("Something else");
};
Это прекрасно работает. Однако, если я переведу TestClass
в другой модуль (test-module/TestClass.ts
) и соответствующим образом изменим код, он дает мне ошибку 'TestClass' only refers to a type, but being used as a value here.
всякий раз, когда я пытаюсь получить доступ к TestClass
.
// some-module/index.ts
import { TestClass } from "test-project";
declare module "test-project" {
interface TestClass {
doSomethingElse(): void;
}
}
TestClass.prototype.doSomethingElse = function(): void {
console.log("Something else");
};
Я использую разрешение модуля NodeJS с помощью CommonJS.
Любая помощь будет высоко оценена.
Я не понимаю, что ваш фрагмент кода с 'Импорт ...«тест-проект» ; "предполагается показать. Это код, который вы пытаетесь запустить после того, как «[вы] переместили« TestClass »в другой модуль»? Если да, то почему вы импортируете 'test-project' вместо' test-module/TestClass'? Если нет, уточните пожалуйста. – Louis
Не могли бы вы взглянуть на ваш 'test-module/index.ts'? – rodrigogq