reactjs - TypeScript React projesinde ESlint ile SVG ile çalışmanın doğru yolu
Projemde TypeScript, React ve ESlint gibi teknolojileri kullanıyorum.
Sorun, eslint'in svg dosyaları için sürekli olarak bir hata vermesi:
"Herhangi bir değerin güvensiz atanması.(eslint@typescript-eslint/no-unsafe-assignment)".
src klasörümün kökünde svg modülü tanımlı custom.d.ts dosyam var:
// declare module "*.svg";
declare module "*.svg" {
import * as React from "react";
export const ReactComponent: React.FunctionComponent<
React.SVGProps<SVGSVGElement> & { title?: string }
>;
const src: string;
export default src;
}
her iki bildirimi de denedim, biri yorum satırı yapılmış olan ve create-react-app'ten alınan.
Projede SVG'leri kullandığım yol:
import Logo from "images/logo.svg";
<Link to={PATH.ROOT} className={styles.logo}>
<img src={Logo} alt="Logo" className={styles.icon} />
<span className={styles.title}>Ascension Wiki</span>
</Link>
Hatanın üstesinden gelmek için şu şekilde tip dönüşümü kullanabilirim:
<img src={Logo as string} alt="Logo" className={styles.icon} />
Veya ESLint'te kuralı kapatabilirsiniz, ama bence bu sorunla başa çıkmanın daha iyi bir yolu olmalı.
Cevap #1
bu beyanı kullanmak benim için eslint hatasını kaldırıyor:
declare module "*.svg" {
const src: string;
export default src;
}
Cevap #2
Yukarıdaki çözüm benim için işe yaradı, belki bir şeyleri yanlış yaptım, ama ben sadece as string ekledim, örneğin <Image src={RightArrow as string} /> ve bu işe yaradı.
