我正在导出这样的功能。
module.exports = function (options: any): RequestHandler {
// Do stuff
}
我正在尝试为导出的函数添加一个定义,但我不确定这是否是正确的方法:
declare global {
export function tsm(options: any): RequestHandler
}
当我尝试测试时,以下两个都说这是有效的:
const tsm = require('ts-middleware')
global.tsm() // Gives intellisense
tsm() // Also gives intellisense
它不应该提供有关global.tsm()
的信息,所以我认为我的定义错误。创建函数定义的正确方法是什么?
我不想使用这样的功能:
const tsm = require('ts-middleware')
tsm.tsm()
但我确实想这样使用它:
const tsm = require('ts-middleware')
tsm()
答案 0 :(得分:0)
要定义模块的输入,请使用declare module 'x' {...}
。即:
declare module 'ts-middleware' {
export = (option: any): RequestHandler
}
但是,您并不需要这样做,因为您在TypeScript中编写了代码。编译器可以自动为您生成输入。
您只需在declaration: true
中添加tsconfig.json
:
// tsconfig.json
{
"compilerOptions": {
"declaration": true
}
}
另外,我强烈建议您使用ESM编写代码。即代替module.exports = ...
:
// named export, preferred
export function foo(options: any): RequestHandler { ... }
// or default export
export default function foo(options: any): RequestHandler { ... }
// import in TypeScript for named export
import { foo } from 'ts-middleware'
// import in TypeScript for default export
import foo from 'ts-middleware'
// require in JavaScript commonjs
const middleware = require('ts-middleware')
middleware.foo(...)