0

对于扩展另一个类的文件,我遇到了自动生成的 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'

我显然在这里遗漏了一些东西。我在这里做错了什么?任何帮助,将不胜感激。

谢谢

编辑:这似乎与 npm 包中的绝对路径和相对路径有关。我们在库中有绝对路径,并且 d.ts 文件也使用绝对路径生成。似乎在其他应用程序中使用这些类时,似乎无法通过它们的路径找到导入的类。我将 node_modules d.ts 文件破解为消费项目中的相对导入路径,它工作正常。我也可以将 npm 包中的路径更改为相对路径,但我想避免这种情况。

4

0 回答 0