按字符串获取

时间:2017-11-15 16:35:36

标签: typescript

嘿我在基于typescript中的类属性查找类中的字符串时遇到问题。

export class EventName {
   public static LOGIN = "LOGIN";
   public static LOGOUT = "LOGOUT";
}

我在网上查了一下,它说只是使用了eventName ['LOGIN'];

之类的东西

然而,这会返回以下错误

元素隐式具有“任意”类型,因为类型“typeof EventName”没有索引签名。

然后我尝试加入     [key:string]:any; 但这仍然给我同样的错误。我想知道有人可以指点我这里的问题谢谢吗?

1 个答案:

答案 0 :(得分:1)

如果您使用eventName['LOGIN'];类的实例尝试示例EventName,则会出现该错误(如果您使用的是--noImplicitAny):

class EventName {
   public static LOGIN = "LOGIN";
   public static LOGOUT = "LOGOUT";
}

const eventName = new EventName();

// Element implicitly has an 'any' type because type 'EventName' has no index signature.
const logout = eventName['LOGOUT'];

这是因为属性为static且不属于实例 - 因此您可以使用:

class EventName {
   public static LOGIN = "LOGIN";
   public static LOGOUT = "LOGOUT";
}

// login: string;
const login = EventName['LOGIN'];

这可能是--noImplicitAny标志非常有用的原因的一个很好的例子。