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