You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何导出其他模块的函数签名至接口或命名空间?

解决TypeScript导出外部函数到接口/命名空间的问题

嘿,我来帮你理顺这个TypeScript的语法问题~你原来的代码里用了=来给接口成员赋值,这是不对的,因为接口只能定义类型约束,不能直接赋值值成员,得用正确的语法来实现你的需求,分两种场景给你讲:

一、把外部函数的类型导出到接口中

如果你的目标是在接口里定义一个类型与myFunction一致的成员,或者让接口直接代表这个函数的类型,正确写法如下:

场景1:接口包含函数类型的属性

import { myFunction } from './a';

// 定义接口,其中包含一个类型与myFunction一致的属性
export interface MyInterface {
  // 用冒号指定属性的类型为myFunction的类型
  myFunction: typeof myFunction;
}

场景2:接口直接表示该函数的类型

如果你想让接口本身就等同于myFunction的函数类型,可以这样写:

import { myFunction } from './a';

// 让接口继承myFunction的函数类型
export interface MyInterface extends typeof myFunction {}

// 或者更直观的类型别名写法(和接口效果类似,按需选择)
export type MyFunctionType = typeof myFunction;

二、把外部函数本身导出到命名空间中

如果你的需求是把函数**本身(值)**导出到命名空间里(因为命名空间可以包含值成员),语法就简单多了:

import { myFunction } from './a';

export namespace MyNamespace {
  // 直接把外部导入的函数作为命名空间的导出成员
  export const myFunction = myFunction;
  
  // 同时也可以导出它的类型
  export type MyFunctionType = typeof myFunction;
}

关键注意点

  • 接口里只能写类型相关的定义,必须用:来指定类型,不能用=赋值;
  • 命名空间既可以包含值(比如函数、变量),也可以包含类型,所以导出值的时候直接用export const即可。

内容的提问来源于stack exchange,提问作者Nicolas Penin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:23:03