Файл определения 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 на относительные, но я бы хотел этого избежать.

0 ответов

Другие вопросы по тегам