Typescript 为什么我无法访问函数属性?

Typescript 为什么我无法访问函数属性?,typescript,javascript,reactjs,Typescript,Javascript,Reactjs,我正在编写一个引用回调函数的函数。但是,我似乎无法访问它的属性 const example = ( callback: (...args: unknown[]) => unknown ): void => ({ name: callback.name // <- errors // ... }) name: callback.name // ts(2339): Property 'name' does not exist on type '(...args

我正在编写一个引用回调函数的函数。但是,我似乎无法访问它的属性

const example = (
   callback: (...args: unknown[]) => unknown
): void => ({
   name: callback.name // <- errors
   // ...
})
name: callback.name 
// ts(2339): Property 'name' does not exist on type '(...args: any[]) => any'
访问函数名(或其他属性)的正确方法是什么

打字稿版本:“
ˆ3.9.7
”(最新发布日期)

从'react'导入{Dispatch,SetStateAction}
从“类型/字段类型”导入{FieldType,ErrorType}
常量句柄错误=(
设定场:调度,
回拨:{
名称:“回调的名称”,
运行:(args)=>{
试一试{
callback.run();
}捕获(e){
常量newError:ErrorType={
name:callback.name,
信息:e.message,
};
设置字段((prevData)=>({
…以前的数据,
错误:[…prevData.errors | |[],newError],
});
}
}
);

好吧,我找到了导致它的原因以及如何修复它。 出现此问题是因为我的
tsconfig.json
是如何在我的项目中设置的

// tsconfig.json
{
  "compilerOptions": {
    "target": "es5",
    // ....
  },
}
原因是
接口函数
仅在
lib.es6.d.ts中声明

因此,根据需要,为了解决这个问题,您可以

  • tsconfig.json

    {
    “编译器选项”:{
    “目标”:“es6”//was“es5”
    // ...
    }
    }
    
  • 或者指定编译中要包含的
    “lib”

    {
    “编译器选项”:{
    “目标”:“es5”,
    “lib”:[“es6”、“dom”、“es2016”、“es2017”、“es5”],//至少需要es6
    // ...
    }
    }
    

您是否可以尝试键入casting
callback.name
@ZeroWorks即使您这样做,错误仍然存在,但您的代码似乎正常:您是否可以尝试
(任何回调)。name
@AkashDathan
(回调).name
从技术上讲确实抑制了typescript错误,但老实说,我对此并不感到兴奋。它确实感觉只是一种解决办法,通过抑制typescript类型控制而不是解决问题
// tsconfig.json
{
  "compilerOptions": {
    "target": "es5",
    // ....
  },
}