在 TypeScript 中使用 JavaScript 类

Jul*_*anG 7 javascript node.js typescript

我在将 TypeScript 引入我们的 JavaScript 项目时遇到了问题。首先,我只想在我的部分代码中使用 TypeScript,而保持 JavaScript 不变。

现在我尝试在我的 TypeScript 代码中使用 JavaScript 类,但最近几天我没有找到解决方案。

导入 JavaScript 的 TypeScript 类的负责人:

import { BaseLogic } from "../baseLogic";
export class ClaimLogic extends BaseLogic {
...
Run Code Online (Sandbox Code Playgroud)

JavaScript 类(“baseLogic.js”):

module.exports = class BaseLogic {
    constructor(meta, logger) {
    ...
Run Code Online (Sandbox Code Playgroud)

我的 *.d.ts 文件(“baseLogic.d.ts”):

export class BaseLogic {
    meta: any;
    log: any;

    constructor(meta: any, logger: any)
}
Run Code Online (Sandbox Code Playgroud)

编译后的 JavaScript 的头部:

const baseLogic_1 = require("../baseLogic");
class ClaimLogic extends baseLogic_1.BaseLogic {
...
Run Code Online (Sandbox Code Playgroud)

正如您在编译后的 JavaScript 中看到的那样,使用了baseLogic_1.BaseLogic。这导致以下错误:

TypeError: Class extends value undefined is not a constructor or null
Run Code Online (Sandbox Code Playgroud)

在 JavaScript 文件中的extends关键字之后只有baseLogic_1一切都很好。

我不知道解决方案,希望你能帮助我!

Rom*_*man 1

中的 codenipetbaseLogic.js导出该类

module.exports = class BaseLogic {
  constructor(meta, logger) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

class ClaimLogic extends baseLogic_1.BaseLogic您尝试使用包含该类的对象进行访问BaseLogic

解决方案

import BaseLogic from '../baseLogic'
// or:  const BaseLogic = require("../baseLogic");

class ClaimLogic extends BaseLogic {
  ...
}
Run Code Online (Sandbox Code Playgroud)