no-unsafe-anyが有効になっているのに、tslintが強く型付けされたパラメーターのプロパティにフラグを立てるのはなぜですか

KrustyGString

Angularプロジェクトでno-unsafe- anytslintルールを有効にするとかなり多くの結果が表示されるようになりました。それらを掘り下げると、強く型付けされたクラスであるにもかかわらず、コンストラクターに注入されたパラメーターのプロパティに任意の型のフラグが立てられます。これらがフラグ付けされている理由がわかりません。明らかに、ここで単純なものが欠落しています。

エラーメッセージ:

タイプ「any」の式の安全でない使用。

コンポーネントの例:

@Component({..)}
export class SampleComponent {
  private localString: string;
  constructor(private injectedService: SampleService) {
    this.localString= this.injectedService.stringProperty;
  }
}

そしてサンプルサービス:

@Injectable({providedIn: 'root'})
export class SampleService {
  public stringProperty: string;
}

注:背景が役立つ場合は、この質問の後に続きます:Typescriptが戻り値の型を強制またはチェックしていません

Titian Cernicova-Dragomir

問題はおそらく、多くの角度デコレータが実際の戻り値の型を持たず、を返すことanyです。tslintルールは、デコレータが期待される場所にanyを割り当てようとしていることを正しく識別します。

1つの解決策は、デコレータのタイプを増やすことです。私は自分のプロジェクトの1つでルールをアクティブにしましたが、これらの拡張によりリンターが幸せになります。必要に応じて他のルールを追加する必要がある場合があります。

import { Type } from '@angular/core/src/type';
declare module '@angular/core/src/metadata/directives' {
    export interface InputDecorator {
        // tslint:disable-next-line:callable-types
        (bindingPropertyName?: string): PropertyDecorator;
    }
}
declare module '@angular/core/src/di/injectable' {

    export interface InjectableDecorator {
        (): ClassDecorator;
        // tslint:disable-next-line:unified-signatures
        (options?: {
            providedIn: Type<any> | 'root' | null;
        } & InjectableProvider): ClassDecorator;
    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ