我正在导出一个像这样的函数,它可以工作。
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()发布于 2018-02-28 14:02:52
要定义模块的类型,请使用declare module 'x' {...}。即:
declare module 'ts-middleware' {
export = (option: any): RequestHandler
}但是,您实际上并不需要这样做,因为您的代码是用TypeScript编写的。编译器可以自动为您生成类型。
您只需在您的tsconfig.json中添加declaration: true
// 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(...)https://stackoverflow.com/questions/49022070
复制相似问题