2017-11-15 1 views
0

Hey私は、typescriptのクラスプロパティに基づいてクラス内の文字列を検索する際に問題が発生しています。文字列によるプロパティ値の取得

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

私はオンラインで見て、eventName ['LOGIN']のようなものを使用すると言います。タイプ「typeof演算EVENTNAMEが」はインデックス署名を持っていないので、しかし、これは暗黙的に、次のエラー

要素を返し

「は、任意の」型を有しています。

その後、私は [key:string]:any;を追加しようとしました。 これでも私には同じエラーが表示されます。私は誰かがここで問題に私を指摘してくれるだろうかと思っていたありがとう?

+1

TypeScript Playgroundでこれを複製することはできません。どのコードでエラーが発生しているのかを正確に表示し、使用しているTypeScriptのバージョンを指定できますか? https://www.typescriptlang.org/play/#src=class%20EventName%20%7B%0D%0A%20%20%20public%20static%20LOGIN%20%3D%20%22LOGIN%22%3B%0D %0A%20%20%20%20%20%20%3D%20%22%3D%20%22%3B%0D%0A%7D%0D%0A%0D%0Alet%20x%20%3D%20EventName%5B'LOGIN '%5D%3B –

答えて

1

あなたがEventNameクラスのインスタンスを使用してあなたの例eventName['LOGIN'];をしようとした場合(あなたが--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とドンであるため、これは、 「Tは、インスタンスに属している - あなたが使用できるように:

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

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

をこれは--noImplicitAnyフラグはひどく便利である理由の良い例かもしれません。

+0

ありがとうございました!完璧な答え – Seamy

関連する問題