を使用して、私は次のような方法を考えてみましょう「の文は、if文で濾過されなければならない」tslintスイッチ
for(... in ...)文は、if文でフィルタリングする必要があります。
類似のものを見ているのはquestionなので、その答えが私の状況に当てはまるとは思わない。すべてのswitch文がif-else-ifラダーのカテゴリに入ると、
tslintはswitch文をif文の形式とみなすべきですが、そうではありませんか?
を使用して、私は次のような方法を考えてみましょう「の文は、if文で濾過されなければならない」tslintスイッチ
for(... in ...)文は、if文でフィルタリングする必要があります。
類似のものを見ているのはquestionなので、その答えが私の状況に当てはまるとは思わない。すべてのswitch文がif-else-ifラダーのカテゴリに入ると、
tslintはswitch文をif文の形式とみなすべきですが、そうではありませんか?
これは私にとって不思議だったので、私はこのルールのためにTSlint source codeをチェックアウトしました。 ts.SyntaxKind.SwitchStatement
ではなく、ts.SyntaxKind.IfStatement
をチェックするように見えるisFiltered
という機能があります。
function isFiltered({statements}: ts.Block): boolean {
switch (statements.length) {
case 0: return true;
case 1: return statements[0].kind === ts.SyntaxKind.IfStatement;
default:
return statements[0].kind === ts.SyntaxKind.IfStatement && nodeIsContinue((statements[0] as ts.IfStatement).thenStatement);
}
}
オブジェクトを配列に変換しない場合は、指定したリンクから修正を使用する必要があります。 Object.keys
、またはif
ステートメントの次のいずれかの
for (const errorName in state.errors) {
if (state.errors.hasOwnProperty(errorName)) {
switch (errorName) {
興味深いのは、あなたがif
のステートメントのいずれかの種類を持つことができますし、エラーが離れて行くだろうということです。 hasOwnProperty
に電話しているかどうかは確認できません。
このルールは、の..を使用しているときにオブジェクトプロトタイプで定義されたプロパティにアクセスできないようにするためのものです。
ただし、コードをリファクタリングして使用するだけで、メンテナンスや開発が容易になります。
の例は、これを次のようになります。
interface ErrorMessageFactory {
(thing: string, state?): string
}
type Errors = 'required' | 'minlength' | 'pattern' | 'validateCardNumberWithAlgo'
let errorFactory: {[e in Errors]: ErrorMessageFactory} = {
required: (thing) => `You must enter a ${thing}`,
minlength: (thing, state) => `A ${thing} must be at least ${state.errors['minlength'].requiredLength}characters`,
pattern: (thing) => `The ${thing} contains illegal characters`,
validateCardNumberWithAlgo: (thing) => `Card doesnt pass algo`
}
function getErrorMessage(state: any, thingName?: string) {
if (state.errors) {
return state.errors.map((error) => errorFactory[error](thingName, state));
}
return [];
}
あなたは遊び場hereで働いスニペットを見ることができます。
私はあなたがそのコードをリファクタリングした方法が本当に好きです。間違いなく「ありがとう」とアップ票 – MHOOS
スイッチの代わりにelseを使用していますか? – toskv
私は100の条件をチェックすると同じことをお勧めしますか? – MHOOS
私は実際にあなたの内部のループを別のものにリファクタリングすることをお勧めします。 :)メソッド呼び出し、またはエラー配列のマップを作成してエラーメッセージのリストを作成することができます。 :) – toskv