2016-09-29 81 views
1

我在Node项目中使用TypeScript 2.0。 Node中的函数具有名称属性。我曾尝试延长打字稿函数接口声明像这样的属性:如何在TypeScript中声明lambda样式函数名称属性?

interface Function 
{ 
    name: string 
} 

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

var info: IAsyncInfo; 
var name = info.func.name 

但打字稿还是抱怨在最后一行:

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

然后我尝试:

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

但TypeScript投诉

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

我不确定到底发生了什么,但是你的函数没有名字。 – Pointy

+0

是的,但这是一个运行时问题。 TypeScript抱怨(在编译时)该属性没有声明,不是在运行时为空或未定义 – prmph

+0

是的,这是我没有得到的部分:) – Pointy

回答

0

我真的不知道你在做什么。

你想要这样的东西吗?

interface IAsyncInfo { 
    name: string; 
    args: any[]; 
    func(...args: any[]): any; 
} 

var info: IAsyncInfo; 
var test = info.func.name; 
+0

这是将变量声明为函数的一种替代方法。但我只是试了一下,错误信息是一样的:“属性'名称'不存在于类型'(... args:任何[]):任何' – prmph

+0

以及你的代码也为我编译 –

相关问题