2016-12-19 4 views
2

Я пытаюсь изменить прототип объекта внутри другого модуля (как показано на рисунке 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.

Любая помощь будет высоко оценена.

+0

Я не понимаю, что ваш фрагмент кода с 'Импорт ...«тест-проект» ; "предполагается показать. Это код, который вы пытаетесь запустить после того, как «[вы] переместили« TestClass »в другой модуль»? Если да, то почему вы импортируете 'test-project' вместо' test-module/TestClass'? Если нет, уточните пожалуйста. – Louis

+0

Не могли бы вы взглянуть на ваш 'test-module/index.ts'? – rodrigogq

ответ

Смежные вопросы