せずに文字列として関数名を取得するために私は(ここで入力された)typescriptですでFunction.name documentation活字体:どのようにTS2339エラー
const o = {
foo(){}
};
o.foo.name; // "foo";
で問題を次の例が見つかりました:私が欲しいとき
const o: { foo:() => void } = {
foo:() => {
}
};
o.foo.name;
が来ます検索するには o.foo.name
、ここで私はエラーが発生します
TS2339(プロパティ "name"は存在しません)
どのように対処すればいいですか? 「foo」というプロパティをキャストすることを避けたい(<any>o.foo).name
PS:リファクタリングのために型を保持するのがユースケースです。たとえば、次のようにリファクタリングすることは安全である:
spyOn(o, (<any>o.foo).name)
この1つはない
spyOn(o, "foo")
PS 2ですが:関数名を取得すると、TS上の問題となる可能性がありそうです:Get name of function in typescript
あなたのコードは、最新の活字体で正常に動作し、あなたが投稿しています完全なコード?多分他の問題がありますか?または、以前のバージョンのTS –
@ TitianCernicova-Dragomir typescript 2.3.3を使用していますが、 "target": "es5"をtsconfig.jsonに使用しています。これはプロパティ名が欠落していると考えられる理由です。 –