2016-09-29 83 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

以及你的代碼也爲我編譯 –

相關問題