reactjs - TypeScript + React | Tüm Bileşen özelliklerini nasıl tip kontrol edersiniz
TS'nin bir bileşenin tüm mevcut özelliklerini tip kontrol ettiğinden nasıl emin olabilirim? Bir özellik yanlış olduğunda, geri kalan "gelecek" özellikler artık kontrol edilmiyor - en azından IDE'mde (Webstorm) bir hata göremiyorum.
Ayrıca kod örneğine bakın: TS Playground
Bir kişinin @ts-ignore ve/veya @ts-expect-error kullanırken birkaç "sorun" veya riskli durumla karşılaştım. Bu, yalnızca belirli olanları yok saymış olmanıza rağmen artık size herhangi bir hata göstermediği için yanlış pozitiflere yol açar, ancak aslında hepsini değil.
Bu hakkında bir TS hatasını bildirdim ama aslında bu kasıtlı bir davranış, örneğin @ts-expect-error'in tüm tür denetiminden sonra çalışması. (bkz: https://github.com/microsoft/TypeScript/issues/49972)
İşte kod; bunu kendiniz deneyebilirsiniz:
import { React, FunctionComponent } from 'react'
export const MyComponent: FunctionComponent<{
validProp: string
}> = (props) => {
return <>MyComponent</>
}
export const MyComponent2: FunctionComponent<{}> = () => {
return (
<>
<MyComponent
validProp='validProp'
invalidProp1
invalidProp2
/>
<MyComponent
validProp='validProp'
// @ts-expect-error
invalidProp1
invalidProp2 // <-- here it should still throw and show me that this prop is invalid
/>
<MyComponent
validProp='validProp'
invalidProp1
// @ts-expect-error
invalidProp2
/>
</>
)
}
Ama yine de bununla ilgili sorunlar görüyorum. Önceki yanlış özellik göz ardı edilmiş olsa bile, TS'nin diğer yanlış özellikler hakkında şikayet ettiğinden nasıl emin olabilirim?
Bir "çözüm", tüm bileşen prop tanımlarının sonunda sadece @ts-expect-error kullanmak olabilir, ancak bunun her zaman uygun olduğundan nasıl emin olunur ve başkalarının gelecekte diğer yanlış propların potansiyel olarak göz ardı edilmesine neden olacak şekilde sırayı yanlışlıkla değiştirmediğini nasıl garanti edebilirsiniz?
Soruma uygun bir şey bulamadım. Bulabildiğim tek konu bu. Ama burada da sorunlar hâlâ mevcut, bu yüzden orada sunulan çözümlerle gerçekten aynı fikirde olamıyorum. Eksik bir JSX türünü nasıl bildirebilir/göz ardı edebilirim?
Neleri geliştirebilirim? Bunun üstesinden gelemeyeceğim bir sınırlama mı?
