2016-10-26 37 views
0

我有一个基本类:如何从TypeScript中的实例获取构造函数的名称?

export default class UserHomeHandler { 
    public init() { 
     console.log(this.constructor.name); 
    } 
} 

编译器抱怨与此错误:

error TS2339: Property 'name' does not exist on type 'Function'. 

如何获得“UserHomeHandler”作为字符串从这个类的一个实例?

+0

'( this.constructor).name'或者'.d.ts'文件必须更新,如果'name'一致出现在函数 –

+0

谢谢@ bali182,它有帮助。它可以做得更优雅,但不必投射任何东西? –

回答

0

你可以创建一个外部.d.ts文件,并在(想法来自danquirk对这个问题GitHub的答案提取:https://github.com/Microsoft/TypeScript/issues/2076):增加了Function

功能name.d.ts

interface Function { 
    name: string 
} 

然后导入定义:

/// <reference path='function-name.d.ts'/> 

export default class UserHomeHandler { 
    public init() { 
    // should compile 
    console.log(this.constructor.name); 
    } 
} 

我知道,远非优雅。如果你不喜欢这种方法,你总是可以投射到any

相关问题