我有一个JavaScript项目,在那里我使用typescript作为助手,不打算在短期内将整个项目转换为typescript。
在index
文件中,定义了一些变量,比如varA
和varB
,这些变量在索引文件中填充,但在调用其他文件中的函数时作为参数传递。我想为其他文件中定义的这些函数添加类型。所有这些函数都有相同的接口。要做到这一点,我正在创建一个类型声明文件,在这里我将定义公共接口,并在每个单独的函数文件中使用它作为JSDoc。我不想在声明文件中手动定义varA
和varB
的类型,但是想要使用index.js
中自动推断的类型。要做到这一点,我可以看到这种工作的一种方法是,如果我显式导出这些变量并将其导入声明文件中。这似乎不好,因为我只是导出类型的变量,它们实际上并没有直接在任何其他文件中使用。有没有更好的替代方法来做到这一点?
//index.js
const varA = getConfigVar(..., 'a');
const varB = getConfigVar(..., 'b');
//... do something
if(something) {
funA(a, b);
} else {
funB(a, b);
}
//?? just exporting for types
module.exports = {
varA,
varB,
}
// funA
/** @type {Func} **/
function funA(a, b) {
...
}
// funB
/** @type {Func} **/
function funB(a, b) {
...
}
//types.d.ts
interface Func {
(a: typeof import('./index').a, b: typeof import('./index').b)): void
}
1条答案
按热度按时间im9ewurl1#
在自己的文件中定义类型,即使它只是一个
a.d.ts
文件,字符串
然后,您的类型脚本代码可以使用这个
A
类型,它是 * 当前 * 隐式定义的,但是如果/当您在一个地方准备好时,您可以更改它。