对于扩展另一个类的文件,我遇到了自动生成的 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 包中的路径更改为相对路径,但我想避免这种情况。