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が戻り値の型を強制またはチェックしていません
問題はおそらく、多くの角度デコレータが実際の戻り値の型を持たず、を返すこと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]
コメントを追加