объявление d.ts для переопределенных методов класса

#javascript #typescript #jsdoc

#javascript #typescript #jsdoc

Вопрос:

Я пытаюсь написать файл js, который аннотируется файлом d.ts. В одном из файлов js у меня есть класс, который расширяет другой класс, и он переопределяет и перегружает функцию из своих родителей, как показано ниже:
test.js

 // @ts-check

class Test {
  constructor() {}
  foo() {}
}

class TestChild extends Test {
  constructor() {
    super();
  }

  foo(param1, param2) {
    return param1   param2;
  }
}

  

dist/test.d.ts

 declare class Test {
    foo(): void;
}
declare class TestChild extends Test {
}
  

tsconfig.json

 {
  "compilerOptions": {
    "allowJs": true,
    "declaration": true,
    "noEmit": false,
    "emitDeclarationOnly": true,
    "target": "es5",
    "outDir": "dist",
    "downlevelIteration": true
  },
  "include": [
    "./src/*.js"
  ]
}

  

По-видимому, в сгенерированном файле d.ts нет объявления для переопределенной функции foo . Что я могу сделать, чтобы typescript автоматически генерировал объявление для любой унаследованной и переопределенной функции?

Комментарии:

1. Вы не получаете эту ошибку — ошибка TS2416: свойство ‘foo’ в типе ‘TestChild’ не может быть присвоено тому же свойству в базовом типе ‘Test’. Тип ‘(param1: any, param2: any) => any’ не может быть присвоен типу ‘() => void’.?

2. @MBB хм, я не вижу этой ошибки в своем редакторе.

3. Можете ли вы запустить свой файл .ts, используя tsc и любую ошибку?

4. @MBB Я не пишу собственный ts-код, я пишу js-файл и комментирую его с помощью d.ts-файла