2016-09-29 8 views
1

NodeプロジェクトでTypeScript 2.0を使用しています。 Nodeの関数にはnameプロパティがあります。私はそうのようなプロパティを宣言するために活字体機能のインターフェースを拡張しようとしている:TypeScriptでラムダスタイルの関数名プロパティを宣言するにはどうすればよいですか?

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 

しかし、タイプスクリプトは文句を言う

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:任意[]):any ' – prmph

+0

あなたのコードも私のためにコンパイルされます –

関連する問題