我在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'
我不確定到底發生了什麼,但是你的函數沒有名字。 – Pointy
是的,但這是一個運行時問題。 TypeScript抱怨(在編譯時)該屬性沒有聲明,不是在運行時爲空或未定義 – prmph
是的,這是我沒有得到的部分:) – Pointy