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

普通TS文件正常的带return函数移到index.d.ts后报TS1036错误如何解决

报错原因
  • .d.ts 是 TypeScript 专用的类型声明文件,仅允许存放类型描述内容,不能包含函数实现、逻辑判断、返回语句等可执行代码。你在 declare function 后直接写了 if 分支、return 等函数实现逻辑,违反了声明文件的语法规范,因此触发了「不能在声明上下文中声明实现」「声明上下文中不允许出现语句」的错误。
  • 你直接将原本的可执行函数代码从普通 .ts/.js 文件挪到 .d.ts 文件,仅修改 export 为 declare 的操作,混淆了「类型声明」和「逻辑实现」的使用边界。
修复方案

根据你的实际需求选择对应方案即可:

方案1:函数实现保留在原test-helper文件,仅在index.d.ts中补充类型声明

删除index.d.ts中该函数的所有实现逻辑,仅保留类型声明行:

// 如果你需要返回自定义的ConfigIntValue类型,请先确保该类型已被正确定义
declare function parseNumericStringOrStringArrayToIntegers(value: string | (string | string[])[]): number | (number | number[])[];
// 若要使用ConfigIntValue作为返回值,写法如下,提前确保ConfigIntValue已定义
// declare function parseNumericStringOrStringArrayToIntegers(value: string | (string | string[])[]): ConfigIntValue;

后续在组件中正常从原test-helper路径引入该函数调用即可,类型会自动匹配声明。

方案2:将函数实现迁移到组件目录下使用

不要把实现代码放在.d.ts文件中,新建普通的.ts文件(比如src/components/app/utils.ts),写入完整的函数实现:

export function parseNumericStringOrStringArrayToIntegers(value: string | (string | string[])[]): number | (number | number[])[] {
  if (typeof value === 'string') {
    return parseInt(value);
  } else {
    return value.map((item) => parseNumericStringOrStringArrayToIntegers(item)) as number | (number | number[])[];
  }
}

需要调用该函数的组件直接从utils.ts路径引入即可。如果需要全局可用无需引入,可以再单独在index.d.ts中补充对应的全局类型声明,不要写实现代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:36:07