Файл определения Typescript (автоматически сгенерированный) с классом, расширяющим другой класс
У меня проблема с автоматически созданным файлом d.ts для файла, расширяющего другой класс. У нас есть такая структура классов: (TS версии 3.2.4)
export declare class MyBaseClass {
id: string = '123';
name: string = 'hello'
}
тогда у нас есть класс, расширяющий это:
import { MyBaseClass } from 'some-absolute-path/resources/my-base-class'
export declare class MyClass extends MyBaseClass {
someProperty: string = 'test';
someFunction(): void {
console.log('hello');
};
}
Затем мы запускаем tsc с флагом объявлений при использовании этого файла конфигурации:
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"sourceMap": true,
"sourceRoot": "src",
"baseUrl": "src",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"noEmitHelpers": false,
"stripInternal": true,
"declaration": true,
"declarationMap": true,
"outDir": "dist/commonjs",
"lib": ["esnext", "dom"],
"resolveJsonModule": true
},
"exclude": ["node_modules", ".vscode", "dist", "**/__tests__/*"]
}
Кажется, что файлы d.ts сгенерированы нормально:
my-base-class.d.ts
export declare class MyBaseClass {
id: string;
name: string;
}
my-class.d.ts
import { MyBaseClass } from 'some-absolute-path/resources/my-base-class'
export declare class MyClass extends MyBaseClass {
someProperty: string;
someFunction(): void;
}
Затем мы упаковываем его как пакет npm и устанавливаем в отдельный проект.
Когда мы приступаем к использованию MyClass в проекте-потребителе, мы не можем получить доступ ни к одному из базовых членов MyClass, например
const test = new MyClass();
test.id <----- Compile time Error in editor: TS2399 Property 'id' does not exist on type 'MyClass'
Я явно что-то здесь упускаю. Что я здесь делаю не так? Любая помощь будет оценена.
Спасибо
EDIT: похоже, это связано с абсолютным и относительным путями в пакете npm. У нас есть абсолютные пути в библиотеке, и файлы d.ts также генерируются с абсолютными путями. Кажется, что при использовании этих классов в другом приложении не удается найти импортированные классы по их пути. Я взломал файл node_modules d.ts, чтобы он был относительными путями импорта в потребляющем проекте, и он работает нормально. Я также могу изменить пути в пакете npm на относительные, но я бы хотел этого избежать.