该答案假定您具有一些不想转换为TypeScript的JavaScript,但是您希望通过对类型的更改很少而受益于类型检查.js
。甲.d.ts
文件是非常像C或C ++头文件。其目的是定义一个接口。这是一个例子:
mashString.d.ts
/** Makes a string harder to read. */
declare function mashString(
/** The string to obscure */
str: string
):string;
export = mashString;
mashString.js
// @ts-check
/** @type {import("./mashString")} */
module.exports = (str) => [...str].reverse().join("");
main.js
// @ts-check
const mashString = require("./mashString");
console.log(mashString("12345"));
这里的关系是:mashString.d.ts
定义一个接口,mashString.js
实现该接口并main.js
使用该接口。
要使类型检查正常工作,请添加// @ts-check
到.js
文件中。但这仅检查main.js
是否正确使用了接口。为了确保mashString.js
正确实现它,我们/** @type {import("./mashString")} */
在导出之前添加。
您可以使用创建初始.d.ts
文件,tsc -allowJs main.js -d
然后根据需要手动编辑它们,以改进类型检查和文档编制。
在大多数情况下,实现和接口具有相同的名称,在此处mashString
。但是您可以有其他实现。例如,我们可以重命名mashString.js
为,reverse.js
并有一个替代方法encryptString.js
。