私はかなりTypeScriptが新しく、いくつかのコードをリファクタリングしようとしています。などTypescript:既知のオブジェクトのキーの1つとしてパラメータまたはプロパティを宣言します。
const Operators = {
equal: '=',
not_equal: '!=',
less: '<',
less_or_equal: '<=',
greater: '>',
greater_or_equal: '>=',
contains: '~'
};
をそして私はクラスが定義されています:
は、私は、オブジェクトは、次のような定義されていることを考えると
class Query {
// I want to limit this to the keys defined in Operator
operator: string;
constructor(operator: string) {
this.operator = operator;
}
getOperatorValue: string {
return Operators[this.operator];
}
}
がどのように私は、パラメータ「演算子は」の一つであることを強制することができますOperators
のキー?
私はgetOperatorValue()
内側の線に対して、次のエラーを取得:
Error: TS7017:Element implicitly has an 'any' type because type '{ equal: string; not_equal: string; less: string; less_or_equal: string; greater: string; greater...' has no index signature.
これは活字体2.4.2を使用しています。
:
ドキュメントは、タイプセーフな
Partial
クラスを実装するためにkeyOf
の使用例を示した{[キー:文字列]:文字列} = ... ' – jonrsharpe