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

如何在TypeScript定义文件(.d.ts)中声明带有errors数组属性的函数类型

给带属性的函数编写TypeScript类型定义

我来帮你搞定这个问题~你遇到的情况是函数本身有调用签名,同时还挂载了额外的属性,普通的函数声明确实没法直接定义这种结构,下面给你两种正确的实现方式:

方法1:用接口定义“函数+属性”的复合类型

这种方式最直观,直接用接口同时描述函数的调用行为和它的属性:

// example.d.ts
// 先定义一个接口,同时包含函数签名和属性
export interface ExampleFunction {
  // 函数调用签名:接收any类型的data,返回boolean
  (data: any): boolean;
  // 挂载的errors属性:字符串数组类型
  errors: string[];
}

// 导出这个类型的变量,对应你js里的myFunc
export declare const example: ExampleFunction;

这样定义后,TypeScript就能识别:

  • 你可以像普通函数一样调用example(someData),返回值会被推断为boolean
  • 你也可以直接访问example.errors,它的类型会被检查为string[]

方法2:用函数+命名空间的合并声明

TypeScript支持同名的函数和命名空间进行合并,也能实现同样的效果:

// example.d.ts
// 先声明函数的调用签名
export declare function example(data: any): boolean;

// 再声明同名的命名空间,用来定义函数的属性
export declare namespace example {
  export let errors: string[];
}

这种写法和第一种效果完全一致,适合需要给函数添加多个零散属性的场景。

纠正你的错误写法

你之前尝试的export declare property uploadedFile.errors: Array<string>;是不符合TypeScript语法的,TypeScript不支持直接这样声明函数的属性,必须用上面两种方式之一来实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 03:13:17