#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-файла