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'
私は何が起こっているのかは分かりませんが、あなたの機能には名前が付いていません。 – Pointy
はい、それは実行時の問題です。 TypeScriptは、(コンパイル時に)プロパティが宣言されておらず、実行時にヌルまたは未定義ではないと不平を言っています – prmph
それは私が得られない部分です:) – Pointy