如何在TypeScript中声明lambda风格的函数名属性?

How do I declare lambda-style function name property in TypeScript?

本文关键字:函数 属性 风格 lambda TypeScript 声明      更新时间:2023-09-26

我在一个Node项目中使用TypeScript 2.0。Node中的函数有一个name属性。我已经尝试扩展TypeScript Function接口来声明属性,像这样:

interface Function 
{
    name: string
}
interface IAsyncInfo {
    name: string,
    args: any[],
    func: (...args: any[]) => any
}
var info: IAsyncInfo;
var name = info.func.name

但是TypeScript仍然在最后一行抱怨:

Property 'name' does not exist on type (...args: any[]) => any

Then I try:

var name = (info.func as Function).name

但是TypeScript抱怨

type '(...args: any[]) => any' cannot be converted to type 'Function'

我真的不知道你在尝试什么

你想要这样的东西吗?
interface IAsyncInfo {
    name: string;
    args: any[];
    func(...args: any[]): any;
}
var info: IAsyncInfo;
var test = info.func.name;